我在iOS上使用KissXML来解析从wcf REST Web服务返回的XML数据(用c#编写)
我遇到的麻烦是KissXML不喜欢我从Web服务获得的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 很好,使用上面的 objective-c,我的数组中有 1 个对象(如预期的那样)。
所以问题是:我应该怎么做? 我可以控制服务和iOS应用程序,因此我可以更改服务以尝试删除或更改命名空间(感谢有关如何执行此操作的指针),或者一旦将数据从字符串中取出我
就可以将数据撕出手机。这两个选项感觉有点像黑客 - 有更好的选择吗?
我建议将默认的OutgoingResponseFormat更改为Json,并处理它而不是 XML。
为什么?在这里阅读:http://www.json.org/xml.html
而且它将:)解决您的问题