2013-12-19 54 views
0

我有多个入口节点的XML文件:解析使用GDataXML与XPATH

<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]; 
     } 

试图让published节点文本时,我总是index 0 beyond bounds for empty array得到一个错误。我尝试了不同的东西,但无法弄清楚什么是正确的方式。
条目数组包含10个条目节点。

回答

1

XPath根据当前上下文进行评估,该上下文已经是<entry/>元素。将XPath表达式更改为./published甚至只是published

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

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

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