Я пытаюсь разобрать канал Atom. Я расширил NSXMLNode
этим методом через категорию:
- (NSString *)stringValueForNodeAtXPath:(NSString *)XPath error:(NSError **)error {
NSArray *nodes = [self nodesForXPath:XPath error:error];
if ([nodes count] == 0) { return nil; }
return [[nodes lastObject] stringValue];
}
Этот метод возвращает строковое значение узла, если ожидается только один узел.
Запись канала Atom выглядит так:
<entry>
<title>A title</title>
<id>Unique id</id>
</entry>
У меня есть NSXMLElement
объект, подобный приведенному выше. Однако при попытке получить title
или id
из entry
, -[NSXMLNode nodesForXPath:error:]
возвращает пустой массив (и поэтому мое расширение возвращает nil
):
_uniqueId = [[XMLElement stringValueForNodeAtXPath:@"/entry/id" error:error] copy];
В чем может быть проблема? Мой запрос XPath неверен? В entry
явно есть id
, а entry
- корневой элемент.
Да, NSLog
-ing XMLElement
подтверждает мое последнее предложение.