Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/99.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS上的NSXMLParser,在给定xml文件的情况下如何使用它_Ios_Xml_Cocoa_Nsxmlparser - Fatal编程技术网

iOS上的NSXMLParser,在给定xml文件的情况下如何使用它

iOS上的NSXMLParser,在给定xml文件的情况下如何使用它,ios,xml,cocoa,nsxmlparser,Ios,Xml,Cocoa,Nsxmlparser,我想知道如何使用NSXML解析器。 假设我有一个简单的xml文件,其中包含如下元素: <Today> <Date>1/1/1000</Date> <Time>14:15:16</Time> </Today> 1/1/1000 14:15:16 如何使用NSXMLParser解析XML文件(它位于本地桌面上),检查每个元素并将它们存储在一个数组中,以便以后显示/使用 我查阅了一些关于它的文档,但不知道如何使用解析器 我知

我想知道如何使用NSXML解析器。 假设我有一个简单的xml文件,其中包含如下元素:

<Today>
<Date>1/1/1000</Date>
<Time>14:15:16</Time>
</Today>

1/1/1000
14:15:16
如何使用NSXMLParser解析XML文件(它位于本地桌面上),检查每个元素并将它们存储在一个数组中,以便以后显示/使用

我查阅了一些关于它的文档,但不知道如何使用解析器 我知道有3种方法(或者更多,如果我错了请纠正我)可以被重写 -…等等 -…等等
-…etc foundCharacters

最简单的方法是这样做:

NSXMLParser *xmlParser = [[NSXMLParser alloc]initWithData:<yourNSData>];
[xmlParser setDelegate:self];
[xmlParser parse];
NSXMLParser*xmlParser=[[NSXMLParser alloc]initWithData:];
[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);
}
-(void)parser:(NSXMLParser*)parser didStartElement:(NSString*)elementName
namespaceURI:(NSString*)namespaceURI
qualifiedName:(NSString*)qualifiedName
属性:(NSDictionary*)属性指令{
NSLog(@“我刚找到%@”的开始标记,elementName);
if([elementName IsequalString:@“employee”]){
//然后解析器刚刚看到一个开始标记
}         
}
-(void)解析器:(NSXMLParser*)解析器查找字符:(NSString*)字符串{
NSLog(@“解析器刚刚在标记中找到此文本:%@”,string);
}
等等等等

当您想将变量设置为某个标记的值时,这会有点困难,但通常是使用类变量caleld完成的,比如“
BOOL-inEmployeeTag
”,您将其设置为true(是)在
didStartElement
:方法中,在
didEndElement
:方法中,检查它在
foundCharacters
方法中的值。如果是,则将var赋值给string的值,如果不是,则不赋值

理查德