如何在iPhone中使用TouchXml解析复杂的XML树
我试图建立一个应用程序,在启动过程中连接到网站并下载XML数据。虽然数据很大(100KB),我使用的是TouchXml。xml是这样的如何在iPhone中使用TouchXml解析复杂的XML树,iphone,objective-c,touchxml,xml-parsing,Iphone,Objective C,Touchxml,Xml Parsing,我试图建立一个应用程序,在启动过程中连接到网站并下载XML数据。虽然数据很大(100KB),我使用的是TouchXml。xml是这样的 <?xml version="1.0" encoding="UTF-8"?> <itemA attA="AAA" attB="BBB" attC="CCC"> <itemB> <itemC1 attD="DDD" attE="EEE" attF="FFF">
<?xml version="1.0" encoding="UTF-8"?>
<itemA attA="AAA" attB="BBB" attC="CCC">
<itemB>
<itemC1 attD="DDD" attE="EEE" attF="FFF">
<itemD>
<itemE1 attG="GGG">
<itemF>ZZZ</itemF>
<itemG>
<itemH1 attH="HHH">
<itemG>ZZZ</itemG>
<itemH>YYY</itemH>
</itemH1>
<itemH1 attH="III">
...
</itemG>
</itemE1>
...
</itemD>
</itemC1>
...
</itemB>
</itemA>
ZZZ
ZZZ
YYY
...
...
...
这里的三个点表示数十个/数百个相同类型的元素。我想提取每个属性和节点内容。首先,我从
[CXMLDocument nodesForXPath:@”//itemA“错误:nil]
并且能够使用-
[cxmlement childAtIndex:index]
但我将如何进一步深入到子节点及其节点并获取它们的值。非常感谢您提供的任何帮助。在本例中,使用事件驱动解析器肯定会更好
NSXMLParser
您可以使用XPath实现以下目的:-
NSArray *nodes = [doc nodesForXPath:@"//itemA/itemB/itemC1" error:nil];
这将返回itemC1元素中的所有节点。注意“doc”是您的CXMLDocument对象
谷歌XPath提供了完整的语法。Echelon感谢您的帖子。我不想为我感兴趣的每个孩子提供“nodesForXPath”。我想在树中进一步深入,相应地,我将生成字典数组/数组字典数组,最终从itemA中生成。好的,所以遍历树是一种直接递归方法,迭代[nodes children]。我记得我第一次使用TouchXML时有点困难,直到我意识到CXMLElement是CXMLNode的一个子类,一旦你开始把所有东西都当作CXMLNode来处理,它就更有意义了;您正在准备的当前对象就是一个很好的例子;我也曾想过使用NSXMLParser,但我只擅长提取属性值。我不知道如何使用“parser:foundCharacters:”获取节点(元素)内容。尽管有许多教程使用“if”或BOOL。我将如何为每个元素实现如此多的if;(就像实际使用的一样),以及您想要构建的数据结构类型?这将使事情更容易解释。不要删除你的评论,这会让谈话变得混乱PYeah,您想使用
NSXMLParser
。