【问题标题】:Parsing an NSXMLElement in Cocoa在 Cocoa 中解析 NSXMLElement
【发布时间】:2008-10-28 00:37:59
【问题描述】:

我正在尝试使用 XPath 来解析 XML 文档。假设地说,我的 NSXMLElement 之一如下所示:

<foo bar="yummy">

我正在尝试获取属性 bar 的值,但是我使用的任何代码解释都会返回 bar="woo",这意味着我需要进行进一步的字符串处理才能访问 woo 和独自求爱。

基本上我在做类似的事情

NSArray *nodes = [xmlDoc nodesForXPath:@"foo/@bar" error:&error];
xmlElement = [nodes objectAtIndex:0];

有没有写上面的代码只是为了给我好吃,而不是 bar="yummy" 这样我就可以不用解析字符串了?

谢谢。


假设正在使用 TouchXML,是否仍然可以获得类似的结果?就像只获取属性的值,没有属性 =“值”?这导致必须进一步解析字符串以获取值。

【问题讨论】:

    标签: iphone objective-c xml cocoa xpath


    【解决方案1】:

    TouchXML API 应该是 Apple 的 NSXML 实现的完全相同的副本,所以它应该是相同的,除非您将所有 NS-Method 替换为 C-Methods。

    TouxhXML 类直接映射到 NSXML 类。 NSXMLNode -> CXMLNodeNSXMLDocument -> CXMLDocumentNSXMLElement -> CXMLElement。由于显而易见的原因,您不能混合和匹配 NSXML 和 TouchXML 类。

    TouxhXML 方法也直接映射到 NSXML 方法,但只支持一小部分方法。常量和枚举名称几乎是等价的(CXML... vs NSXML...),但常量值不等价

    reference

    使用常规 Apple 类或 TouchXML 框架,以下代码将为您的示例提供字符串“yummy”。

     NSArray *nodes = [xmlDoc nodesForXPath:@"./foo/@bar" error:&err];
     NSString *value = [[nodes objectAtIndex:0] stringValue];
    

    祝你好运,

    布赖恩 G

    【讨论】:

      【解决方案2】:

      如果你试图在 iPhone 上使用 NSXMLDocument 类,你会非常失望,因为这个类(以及相关的 NSXMLNode、NSXMLElement 等类)在手机上不可用(它们在模拟器,这可能会令人困惑)。

      看看 libxml2 在手机上做 XML 解析。有几个免费的框架(我相信 TouchXML 是一个很好的框架)可以做到这一点。

      话虽如此,如果你想在 Mac 上运行这段代码,你可以使用 NSXMLElement 方法-attributeForName: 来提取你想要的属性。

      【讨论】:

        【解决方案3】:

        Ben 是对的 - 虽然 iPhone-SDK 代码将使用 NSXMLDocument 构建并在模拟器中运行,但它根本无法在设备上运行。文档可能在某处提到它,但它相当模糊。 TouchXML 是 TouchCode 的一部分;你可以找到更多关于它的信息here

        【讨论】:

          【解决方案4】:

          iPhone 确实可以访问 NSXMLParser,这是一个不错的小型 sax 解析器。 Aaron Hillegass 有一篇关于使用 NSXMLParser 的好文章。 它不支持 XPath,但在将 xml 转换为数据对象时非常方便。

          Parsing XML in Cocoa

          【讨论】:

            猜你喜欢
            • 2014-05-14
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-05-06
            相关资源
            最近更新 更多