2011-07-01 86 views
2

我是iPhone開發的新手。我想解析這樣的XML文件來獲取屬性值。如何檢查iPhone上帶有空標籤的結束元素?

<Root> 
     <element att_1 ="value1" att_2 ="value2" /> 
     <element att_1 ="value1" att_2 ="value2" /> 
          . 
          . 
          . 

    <Root/> 

通常XML文件

<element att="..."> content <element/> 

我用這個在didEndElement

if([elementName isEqualToString:@"element"]){ 

    // Do something 

    } 

如何檢查空標籤?請給我建議。 謝謝。

對不起我的英語不好。

============================================== =======================

現在我有新的problem.when我運行應用程序(模擬器)它卡住並顯示消息「Thread1:停止在斷點「在didStartElement.I我想我做錯了什麼。

StudyList.xml

<StudyList> 
      <study description="20040311181130" modsInStudy="" pat_birth="19760822" pat_id="47-3450" pat_name="Ekachai Chaichanasiri" refPhy="" study_date="Sun Jan 11 00:03:00 ICT 2004" study_id="696122224" study_iuid="1.2.392.200036.9123.100.200.20040311181130"/> 
      <study description="XoranCAT Study" modsInStudy="" pat_birth="19821117" pat_id="63" pat_name="Wantana Areeprayolkij" refPhy="" study_date="Fri Jan 28 00:04:00 ICT 2005" study_id="" study_iuid="1.2.826.0.1.3680043.2.594.4041.16900.9840.32723.30648"/> 
    </StudyList> 

代表

-(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict{ 


    if ([elementName isEqualToString:@"StudyList"]) { 
    //Initialize the array. 
    appDelegate.studyList = [[NSMutableArray alloc] init]; 
    } else if ([elementName isEqualToString:@"study"]) { 
    //Initialize the study. 
    aStudy.patientBrith = [attributeDict objectForKey:@"pat_birth"] ; 
    aStudy.patientID = [attributeDict objectForKey:@"pat_id"]; 
    aStudy.patientName = [attributeDict objectForKey:@"pat_name"]; 
    aStudy.studyDate = [attributeDict objectForKey:@"study_date"]; 


    NSLog(@"Patient name: %@",aStudy.patientName); 
    NSLog(@"Patient ID: %@",aStudy.patientID); 
    NSLog(@"Patient Birth: %@" ,aStudy.patientBrith); 
    NSLog(@"Study Date: %@" ,aStudy.studyDate); 

     } 
    NSLog(@"Process Element"); 
    } 
    -(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{ 
    //Nothing to do because XML file dose not have text node 

    } 

    -(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{ 

    //End if XML file nothing to do. 
    if ([elementName isEqualToString:@"StudyList"]) { 
    return; 

    //Add study object in to array and release the object. 

    if ([elementName isEqualToString:@""]||elementName == nil) { 
     [appDelegate.studyList addObject:aStudy]; 
      } 
     } 
    } 

的NSLog(@ 「患者姓名:%@」,aStudy.patientName);

NSLog(@「Patient ID:%@」,aStudy.patientID); NSLog(@「Patient Birth:%@」,aStudy.patientBrith); (@「學習日期:%@」,aStudy.studyDate);

***以上輸出爲空。 有什麼不對,請以正確的方式告訴我。

+1

如果您希望ppl能夠幫助您,您可能想要接受以前問題的答案。 – Balanivash

+1

如果有人回答您提問的問題,答案旁邊將顯示覆選標記的大綱。你可以點擊它來「接受」一個最能解決你問題的答案。這會提醒其他人回答可能會對他們有幫助的問題,將信譽點授予花時間回答您問題的人,並且通常是支持SO社區的好方法。您可能想回顧以前的9個問題,看看是否有真正幫助的問題,並「接受」它。 – PengOne

+0

謝謝你的建議,我會做的。 – miniplayground

回答

0

保留字符串的值在這個函數

- (void) parser:(NSXMLParser *)parser foundCharacters:(NSString *)string 

- (void) parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName 檢查

if ([retainedString isEqualToString:@"" ] || [retainString == nil) 

則該值爲空。

+0

謝謝你的回答。現在我有更新問題中的新問題,請幫助我。 – miniplayground

+0

從xcode中刪除中斷點,右鍵單擊該行並刪除斷點。 –

+0

也接受一些答案。 –

相關問題