处理NSXmlParser中的自我closures标记?

我们如何才能在NSXmlparser中处理自闭标签? 没有起始元素和结束元素 – 是否有可能处理以下types的标签?

<ITEM NAME/> <REG Number/> 

任何XMLparsing器,包括NSXMLParser都应该这样处理:

 <ITEMNAME/> 

与此XML相同:

 <ITEMNAME></ITEMNAME> 

换句话说,就你所写的parsing器代码而言,你应该看到parsing器调用的元素callback的开始和结束。 为了certificate这一点,我把下面的示例XML放在一个文件中:

 <top> <sample1/> <sample2 attr1="a"/> </top> 

然后我实现了下面的代码来加载这个文件并parsing它:

 NSURL *sampleURL = [[NSBundle mainBundle] URLForResource:@"sample" withExtension:@"xml"]; NSXMLParser *parser = [[NSXMLParser alloc] initWithContentsOfURL:sampleURL]; [parser setDelegate:self]; [parser parse]; 

我的parsing器委托方法实现如下:

 - (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI: (NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict { NSLog(@"Received didStartElement callback for tag: %@", elementName); } - (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName { NSLog(@"Received didEndElement callback for tag: %@", elementName); } 

当我运行这个代码时,我看到了下面的控制台输出:

 2012-01-01 22:24:24.011 SampleXML[10248:707] Received didStartElement callback for tag: top 2012-01-01 22:24:24.012 SampleXML[10248:707] Received didStartElement callback for tag: sample1 2012-01-01 22:24:24.013 SampleXML[10248:707] Received didEndElement callback for tag: sample1 2012-01-01 22:24:24.013 SampleXML[10248:707] Received didStartElement callback for tag: sample2 2012-01-01 22:24:24.015 SampleXML[10248:707] Received didEndElement callback for tag: sample2 2012-01-01 22:24:24.015 SampleXML[10248:707] Received didEndElement callback for tag: top 

正如你所看到的,对于sample1和sample2标签,我都得到了didStartElement和didEndElementcallback,这就是它应该如何工作的。

我不得不做一个XMLparsing器,我的一个标签是空的,自封闭即

开始和祈祷正在工作…

这是结束标记,它将调用NSXMLParser委托的didEndElement

find的这个标签的字符将是空的。

不需要任何特殊的逻辑来处理这个问题