我想知道如何使用NSXML解析器。 所以,假设我有一个简单的xml文件,其中包含以下元素:
<Today>
<Date>1/1/1000</Date>
<Time>14:15:16</Time>
</Today>
我如何使用NSXMLParser来解析XML文件(它在本地btw,桌面上),检查每个元素并将它们存储在一个数组中,以便以后显示/使用?
我正在查看有关它的一些文档,我不知道如何使用解析器 我知道有三种方法(或更多,请纠正我,如果我错了)可以被覆盖 - ..等didStartElement - ..等didEndElement - .. etc foundCharacters
答案 0 :(得分:4)
最简单的事情是做这样的事情:
NSXMLParser *xmlParser = [[NSXMLParser alloc]initWithData:<yourNSData>];
[xmlParser setDelegate:self];
[xmlParser parse];
请注意,setDelegate:将委托设置为“self”,表示当前对象。因此,在该对象中,您需要实现您在问题中提到的委托方法。
在代码中进一步向下,粘贴:
- (void) parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI
qualifiedName:(NSString *)qualifiedName
attributes:(NSDictionary *)attributeDict{
NSLog(@"I just found a start tag for %@",elementName);
if ([elementName isEqualToString:@"employee"]){
// then the parser has just seen an <employee> opening tag
}
}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{
NSLog(@"the parser just found this text in a tag:%@",string);
}
等。等
当你想要做一些事情,例如将变量设置为某个标签的值时,这有点困难,但通常使用类似于“BOOL inEmployeeTag
”的类变量caleld来设置为true(YES)在didStartElement
:方法中,在didEndElement
:方法中使用false - 然后在foundCharacters
方法中检查它的值。如果是,则将var分配给string的值,如果不是,则不分配。
理查德