2011-07-01 42 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

也接受一些答案。 –

相关问题