2013-12-19 6 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]; 
     } 

Я всегда получаю сообщение об ошибке с index 0 beyond bounds for empty array при попытке получить текст в published узел. Я пробовал разные вещи, но не могу понять, что является правильным.
Записи массива содержат 10 узлов ввода.

ответ

1

XPath оценивается из текущего контекста, который уже является элементом <entry/>. Измените выражение XPath на ./published или даже на published.

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

Но зачем вообще использовать XPath, если вы просто хотите запросить дочерний узел?

published = [element elementsForName:@"published"][0]; 
Смежные вопросы