Iphone 如何使用NSXMLParser解析基本XML文件?
我正在尝试为我的iPhone应用程序找出NSXMLParser,虽然我大致了解它是如何工作的,但对于如何提取所需的值,我仍然有点困惑 我正在解析的XML结果非常基本。是这样的:Iphone 如何使用NSXMLParser解析基本XML文件?,iphone,objective-c,xml,cocoa-touch,nsxmlparser,Iphone,Objective C,Xml,Cocoa Touch,Nsxmlparser,我正在尝试为我的iPhone应用程序找出NSXMLParser,虽然我大致了解它是如何工作的,但对于如何提取所需的值,我仍然有点困惑 我正在解析的XML结果非常基本。是这样的: <start> <status>300</status> <record> <title>The Title</title> <content>Some content</content> </record
<start>
<status>300</status>
<record>
<title>The Title</title>
<content>Some content</content>
</record>
</start>
300
标题
一些内容
我需要做3件事:
获取status的值。
从第一条记录中获取内容的值。可能会有一个响应提供多个“记录”元素,所以我只需要得到第一个
我不知道如何简单地做到这一点。我看到的大多数示例都涉及到创建一个单独的对象来填充这些数据,我看不出这对于2个值是必要的。有谁能告诉我如何提取这两条数据,并且只针对第一条记录?当
NSXMLParser
遇到XML标记时,发生的第一件事是调用委托方法parser:didStartElement:namespaceURI:qualifiedName:attributes:
;您可能只需要在此处使用elementName
变量。然后,XML解析器读取标记中的字符,并使用内容调用parser:foundCharacters:
。最后调用解析器:didEndElement:namespaceURI:qualifiedName
正如苹果在地震活动CXML示例中使用的那样,我所采用的方法是使用以下方法:
解析器:didStartElement:namespaceURI:qualifiedName:attributes:
中,将元素名的字符串与已知值进行比较,以确定它是否是您关心的字符串。如果是这样,那么将实例变量(一个NSMutableString
;我将其称为contentOfCurrentXMLProperty
)设置为空字符串。否则将其设置为nil
parser:foundCharacters:
中,将找到的字符追加到contentOfCurrentXMLProperty
parser:didEndElement:namespaceURI:qualifiedName
中,将contentofCurrentXMLProperty
的值分配给适当的变量状态的整数(或任何您正在使用的数据类型)
其次,因为您只需要记录的第一个值,所以在解析器:didStartElement:…
中,我设置了一个BOOL
来标记您之前是否已经看到记录
标记,如果是这样,将contentOfCurrentXMLProperty
设置为nil
请记住,NSXMLParser类似于SAX的基于事件的解析器,您必须设置解析器,启动它并侦听关键事件
设置解析器:
NSXMLParser*parser=[[NSXMLParser alloc]initWithData:data]
[解析器setDelegate:self]
[语法分析器解析]代码>
覆盖这些方法:
–解析器:didStartElement:namespaceURI:qualifiedName:attributes:
–解析器:didEndElement:namespaceURI:qualifiedName:
–解析器:查找字符:
您的功能必须基本上说:
- 当到达标记的下一个起点时:
-(void)解析器:didStartElement:(NSString*)namespaceURI:(NSString*)qualifiedName:(NSString*)attributes:(NSDictionary*)
- 如果该标签的名称为“状态”:
[elementName IsequalString:@“状态”]
- 给我标签的字符串数据:
-(void)解析器:(NSXMLParser*)foundCharacters:(NSString*)
…
[appendString: