是否有人如何使用TTXMLParser。我找不到任何文档或示例代码。
是SAX还是DOM?
它是否支持Xpath?
我可以从元素中提取CDATA吗?
我有一个已经使用了几个Three20模块的应用程序,如果必须使用另一个解析器,那将是一种耻辱。
答案 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
成员,然后查看生成的结果树对象。