如何在iPhone中使用TouchXml解析复杂的XML树

时间:2010-09-17 10:03:44

标签: iphone objective-c touchxml xml-parsing

我正在尝试构建一个应用程序,在启动期间连接到网站并下载XML数据。虽然数据很大(100 KB),我正在使用TouchXml。 xml是这样的。

<?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>

这里有三个点“......”呈现数十/数百种相同类型的元素。我想提取每个属性和节点内容。最初我以

开头
  

[CXMLDocument nodesForXPath:@“// itemA”错误:nil];

并且能够使用 -

获取其属性和第一个子节点
  

[CXMLElement childAtIndex:index];

但是我将如何进一步进入子节点及其节点并获取它们的值。非常感谢任何帮助。链接文字

2 个答案:

答案 0 :(得分:1)

在这种情况下,使用事件驱动的解析器肯定会更好地服务 ; NSXMLParser

答案 1 :(得分:1)

您可以使用XPath: -

  NSArray *nodes = [doc nodesForXPath:@"//itemA/itemB/itemC1" error:nil]; 

这将返回itemC1元素中的所有节点。注意'doc'是您的CXMLDocument对象。

Google XPath的完整语法。