как обеспечить пространство имен для использования запроса xpath в target-c - PullRequest
0 голосов
/ 21 мая 2011

Я пытаюсь использовать xpath-запрос в моем приложении для разбора XML. моя работа почти завершена, и концепция пространства имен вошла в картину. Я всегда пишу запрос правильно, но он возвращает мне 0 объектов в моем массиве. Я перепробовал много блогов и много постов на нашем stackoverflow.com, но ни один из них не работал. Я надеюсь, что моя проблема нуждается в небольшом изменении, любой может изменить мой код. мой код Спасибо всем. Я думаю, что многие люди пытаются показать, что мой вопрос дублирован, но он отличается, потому что ни один из вопросов не работал для моей проблемы. Пожалуйста, предоставьте мне свое предложение. Ваш ответ более полон для моей работы.

1 Ответ

0 голосов
/ 23 мая 2011

Я так понимаю, вы используете libxml вместе с упаковщиками Какао Мэтта Галлахера? (Полезно указать, какие сторонние библиотеки вы используете в своем вопросе.)

Когда я это сделал, я изменил код Мэтта так, чтобы PerformXPathQuery принял дополнительный аргумент, NSDictionary пространств имен. (Другие функции, такие как PerformXMLXPathQuery, также принимают этот аргумент и проходят через объект.)

Затем, в PerformXPathQuery, после создания контекста я зарегистрировал пространства имен следующим образом:

if (namespaces != nil)
{
    for (NSString *key in namespaces) 
    {
        xmlXPathRegisterNs(xpathCtx, (const xmlChar *)[key UTF8String], (const xmlChar *)[[namespaces objectForKey:key] UTF8String]);
    }
}
...