使用 KissXML 处理 wcf Rest Web 服务 - 我应该如何处理命名空间问题



我在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

而且它将:)解决您的问题

最新更新