TTXMLParser示例代码?

时间:2010-11-16 00:41:30

标签: iphone objective-c sdk three20

是否有人如何使用TTXMLParser。我找不到任何文档或示例代码。

是SAX还是DOM?

它是否支持Xpath?

我可以从元素中提取CDATA吗?

我有一个已经使用了几个Three20模块的应用程序,如果必须使用另一个解析器,那将是一种耻辱。

1 个答案:

答案 0 :(得分:2)

我在TTXMLParser中找到的主要文档位于header file。那里的评论概述了TTXMLParser的作用。

TTXMLParser不应该像你想象的那样被认为是一个XML解析器 - 从这个意义上说,诸如“它是SAX还是DOM”和“它是否支持XPath”之类的问题不是直接的适用。相反,将TTXMLParser视为一个方便的类来获取XML并将其转换为Objective-C对象的树。例如,这个XML节点:

<myNode attr1="value1" attr2="value2" />

将变为Objective-C NSDictionary节点,该节点将键“attr1”映射到值“value1”,将键“attr2”映射到键“value2”。

TTXMLParser内部使用NSXMLParser(基本上是SAX)来构建其树,但作为TTXMLParser的用户,您不必执行任何类似SAX的操作。

所以,不,你最终不会得到一个可以执行XPath查询的XML文档。相反,您将得到一个Objective-C对象树。如果这就是你想要的,那就太好了;如果你想要一个带XPath的传统XML解析器,我目前正在开发一个同时使用Three20和TouchXML的项目。 TouchXML支持XPath。

我同意很难找到TTXMLParser的示例代码。 Three20的TTTwitter示例使用来使用TTXMLParser(实际上是TTURLXMLResponse,后者又使用了TTURLParser),但在某些时候它被更改为使用{{相反,这是一种耻辱,因为这是他们唯一的XML样本。

您仍然可以看到旧的基于XML的示例代码here。具体来说,查看文件底部附近的TTURLJSONResponse函数,以获取一些带有-[requestDidFinishLoad:]的代码的示例,查询其TTURLXMLResponse成员,然后查看生成的结果树对象。