【问题标题】:TTXMLParser Sample Code?TTXMLParser 示例代码?
【发布时间】:2010-11-16 00:41:29
【问题描述】:

有谁熟悉如何使用 TTXMLParser。我在上面找不到任何文档或示例代码。

是 SAX 还是 DOM?

它支持 Xpath 吗?

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

我有一个应用程序已经使用了几个 Three20 模块,如果不得不使用另一个解析器,那就太可惜了。

【问题讨论】:

    标签: iphone objective-c sdk three20


    【解决方案1】:

    我为 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 成员,然后沿着生成的对象树向下走。

    【讨论】:

      猜你喜欢
      • 2011-04-23
      • 2011-12-17
      • 2016-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多