我们怎样才能在NSXmlparser中处理自动关闭标签?没有 起始元素和结束元素 - 是否可以处理以下类型的标记?
<ITEM NAME/>
<REG Number/>
答案 0 :(得分:5)
任何XML解析器,包括NSXMLParser,都应该对此进行处理:
<ITEMNAME/>
与此XML相同:
<ITEMNAME></ITEMNAME>
换句话说,就编写的解析器代码而言,您应该看到解析器调用元素回调的开始和结束。为了证明这一点,我将以下示例XML放在一个文件中:
<top>
<sample1/>
<sample2 attr1="a"/>
</top>
然后,我实现了以下代码来加载此文件并解析它:
NSURL *sampleURL = [[NSBundle mainBundle] URLForResource:@"sample" withExtension:@"xml"];
NSXMLParser *parser = [[NSXMLParser alloc] initWithContentsOfURL:sampleURL];
[parser setDelegate:self];
[parser parse];
我的解析器委托方法实现如下:
- (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和didEndElement回调,这就是它应该如何工作。
答案 1 :(得分:0)
这是结束标记,它将调用didEndElement
代理的NSXMLParser
。
此标记的已找到字符将为空。
无需任何特殊逻辑来处理this.v
答案 2 :(得分:0)
我必须制作一个xml解析器,其中一个标签是空的并且自我封闭即
开始和努力工作......