Не удается получить элемент XML с двоеточием в имени, используя TouchXML

У меня есть следующий код:

NSString *subtitle = [[[node elementsForName:@"subtitle"] objectAtIndex:0] stringValue];
NSString *duration = [[[node elementsForName:@"itunes:duration"] objectAtIndex:0] stringValue];

Первая строка работает отлично. Вторая строка не будет работать. Я предполагаю, что это как-то связано с пространствами имен, но я довольно новичок во всем этом, поэтому буду признателен за любые рекомендации. Спасибо!


Оказывается, я могу использовать elementsForLocalName:URI: правильно читать элемент. Теперь проблема в том, что, поскольку я использую библиотеку TouchXML, не похоже, чтобы этот метод был сопоставлен с CXMLElement структура (см. здесь).

Итак, вопрос сейчас: как я могу преобразовать CXMLElement для NSXMLElement чтобы я мог использовать этот метод?

1 ответ

Решение

"itunes" - это идентификатор пространства имен. Сам по себе он не имеет никакого значения, он просто связывает URI с соответствующим элементом. Похоже, вы используете расширения RSS RSS, которые живут под пространством имен http://www.itunes.com/dtds/podcast-1.0.dtd,

Итак, для элементов пространства имен я думаю (я не знаком с Objective-C или NSXML:P), который вы хотите использовать elementsForLocalName вместо:

[node elementsForLocalName: @"duration" URI: @"http://www.itunes.com/dtds/podcast-1.0.dtd"]

Для ответа на второй вопрос см. Комментарии ниже.

Другие вопросы по тегам