Я пытаюсь разобрать канал 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 выглядит следующим образомthis:
<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
подтверждает мой последнийпредложение.