【发布时间】:2011-08-04 05:58:02
【问题描述】:
我是 xcode 开发的新手。我正在尝试实现一个 Web 服务调用以从服务器获取值并将其显示在表格视图上。我从网络获得了一些示例代码以及一些如何使其工作的方法。但我仍然不知道解析器如何遍历 xml 节点。 谁能帮我找出 xcode 中 xml 解析器的工作原理以及 它如何在没有 for 循环的情况下通过所有节点?
【问题讨论】:
标签: iphone xcode nsxmlparser
我是 xcode 开发的新手。我正在尝试实现一个 Web 服务调用以从服务器获取值并将其显示在表格视图上。我从网络获得了一些示例代码以及一些如何使其工作的方法。但我仍然不知道解析器如何遍历 xml 节点。 谁能帮我找出 xcode 中 xml 解析器的工作原理以及 它如何在没有 for 循环的情况下通过所有节点?
【问题讨论】:
标签: iphone xcode nsxmlparser
实际上有五个委托方法
1.didstartdocument
2.didstartelement
3.找到的字符
4.didendelement
5.didenddocument
在这第一个方法是用于启动文档。 第二种方法是如果找到任何起始元素,则如果起始元素有数据,则转到找到的字符。之后进入didendelement。之后再次进入didstartelement。它重复进行。如果文档结束,则进入didenddocument。
【讨论】:
NSXMLParser 从您那里获取数据并解析数据,在解析时它会发送适当的委托将数据返回给您。它的工作原理类似于进行基本的 XML 解析,然后以委托的形式向您发送数据——因此您不需要从一端循环来解析 XML。
【讨论】:
这很简单,为了它的正确流程,你可以在它的方法上放置断点,然后检查你会理解的所有参数的值。更多细节请考虑这些放置断点的方法
[self parseXMLFileAtURL:path];
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
在 didStartElement 中检测到您的元素,您将内存分配给要在其中存储值的对象,并且在 didEndElement 中您拥有存储在永久数组中的值。
【讨论】: