我在 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 应用程序,因此我可以更改服务以尝试删除或更改命名空间(指向如何执行此操作的指针表示赞赏),或者我可以在获取数据后将其从字符串中删除到电话。
这两个选项都感觉有点像黑客 - 有更好的选择吗?