【发布时间】:2010-11-16 00:41:29
【问题描述】:
有谁熟悉如何使用 TTXMLParser。我在上面找不到任何文档或示例代码。
是 SAX 还是 DOM?
它支持 Xpath 吗?
我可以从元素中提取 CDATA 吗?
我有一个应用程序已经使用了几个 Three20 模块,如果不得不使用另一个解析器,那就太可惜了。
【问题讨论】:
标签: iphone objective-c sdk three20
有谁熟悉如何使用 TTXMLParser。我在上面找不到任何文档或示例代码。
是 SAX 还是 DOM?
它支持 Xpath 吗?
我可以从元素中提取 CDATA 吗?
我有一个应用程序已经使用了几个 Three20 模块,如果不得不使用另一个解析器,那就太可惜了。
【问题讨论】:
标签: iphone objective-c sdk three20
我为 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),但在某些时候它被更改为使用TTURLJSONResponse,这是一个很遗憾,因为这是他们唯一的 XML 示例。
您仍然可以看到旧的基于 XML 的示例代码 here。具体来说,请查看文件底部附近的 -[requestDidFinishLoad:] 函数,以获取一些采用 TTURLXMLResponse 的代码示例,查询其 rootObject 成员,然后沿着生成的对象树向下走。
【讨论】: