使用带有XPATH的GDataXML进行解析

时间:2013-12-19 19:52:39

标签: ios xpath gdataxml

我有一个包含多个输入节点的XML文件:

<entry>
    <published>2013-12-19T13:30:20-05:00</published>
    <title>This is a title</title>
    <content type="html">This is the content</content>
    <author>
        <name>Valentina</name>
    </author>
</entry>

我正在尝试使用XPath解析它(用于学习目的),但我似乎无法使其工作。我有以下代码:

        NSData* xmlData = [[NSMutableData alloc] initWithContentsOfURL:[NSURL URLWithString:link]];
        GDataXMLDocument *document = [[GDataXMLDocument alloc] initWithData:xmlData options:0 error:nil];

        NSArray* entries = [document.rootElement elementsForName:@"entry"];
        for(GDataXMLElement* element in entries)
        {
            published = [element nodesForXPath:@"/entry/published" error:nil][0];
        }

尝试获取index 0 beyond bounds for empty array节点文本时,我总是遇到published错误。我尝试了不同的东西,但无法弄清楚究竟是什么方法 条目数组包含10个条目节点。

1 个答案:

答案 0 :(得分:1)

从当前上下文(已经是<entry/>元素)计算XPath。将XPath表达式更改为./published或甚至只更改published

published = [element nodesForXPath:@"published" error:nil][0];

但是,如果您只想查询子节点,为什么要使用XPath呢?

published = [element elementsForName:@"published"][0];