Обработка веб-службы wcf Rest с использованием KissXML - как мне решить проблему с пространством имен
Я использую KissXML на iOS для анализа XML-данных, возвращаемых веб-службой wcf REST (написанных на C#)
Проблема в том, что KissXML не нравится пространство имен в данных XML, которые я получаю от веб-службы.
В тривиальном примере XML-данные, которые я получаю, выглядят так:
<ArrayOfItem xmlns="http://schemas.datacontract.org/2004/07/DataUpdateService" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"><Item>Test</Item></ArrayOfItem>
KissXML не может использовать xpath для разбора этого XML
resultNodes = [xmlDoc nodesForXPath:@"//Item" error:&error];
Если я удаляю пространство имен по умолчанию из строки XML - тогда оно работает нормально.
<ArrayOfItem xmlns:i="http://www.w3.org/2001/XMLSchema-instance"><Item>Test</Item></ArrayOfItem>
Так что с этим XML все в порядке, и, используя вышеуказанную цель-c, я получаю 1 объект в моем массиве (как и ожидалось).
Итак, вопрос: что мне делать с этим? У меня есть контроль как над службой, так и над приложением для iOS, поэтому я могу либо изменить службу, чтобы попытаться удалить, либо изменить пространство имен (указатели на то, как это сделать, желательно), либо я могу вырвать его из моей строки, как только получу данные на телефон.
Оба эти варианта выглядят как хак - есть ли лучшие варианты?
1 ответ
Я бы порекомендовал изменить defaultOutgoingResponseFormat на Json и обработать его вместо xml.
Зачем? читайте здесь: http://www.json.org/xml.html
а также это решит вашу проблему:)