2010-07-08 2 views
1

У меня есть следующий код:Невозможно получить XML-элемент с двоеточием имя с помощью TouchXML

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

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


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

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

+0

Вы просматривали содержимое узла в отладчике? Когда вы говорите, что это не сработает, означает ли это, что продолжительность равна нулю или вы получаете исключение? – falconcreek

ответ

2

"itunes" - это идентификатор пространства имен. На самом деле это не имеет никакого значения, оно просто связывает URI с данным элементом. Похоже, вы используете расширения iTunes 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"] 

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

+0

Спасибо, Поркс, я думаю, что это точно. Но теперь есть еще одна проблема - см. Мое редактирование выше. –

+0

Похоже, если вы можете получить фактический префикс, используемый XML-документом (так что бы ни было «xmlns: ____ =» http://www.itunes.com/dtds/podcast-1.0.dtd », вы должны быть в состоянии просто использовать 'elementsForName: @" ____: duration ". – porges

+0

Это тоже не работает - _____ является «itunes». Похоже, мне может понадобиться либо переключиться на другую библиотеку, либо каким-то образом сделать повторно отформатированный прокси для фида XML из iTunes. Я ценю вашу помощь Порше! –

Смежные вопросы