使用 KissXML 处理 wcf Rest Web 服务 - 我应该如何处理命名空间问题
Posted
技术标签:
【中文标题】使用 KissXML 处理 wcf Rest Web 服务 - 我应该如何处理命名空间问题【英文标题】:Handling wcf Rest web service using KissXML - how should I handle namespace issue 【发布时间】:2012-04-11 15:36:35 【问题描述】:我在 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 应用程序,因此我可以更改服务以尝试删除或更改命名空间(指向如何执行此操作的指针表示赞赏),或者我可以在获取数据后将其从字符串中删除到手机。
这两个选项都感觉有点像 hack - 还有更好的选项吗?
【问题讨论】:
【参考方案1】:我建议将 defaultOutgoingResponseFormat 更改为 Json, 并处理它而不是 xml。
为什么?在这里阅读: http://www.json.org/xml.html
它也会解决你的问题:)
【讨论】:
以上是关于使用 KissXML 处理 wcf Rest Web 服务 - 我应该如何处理命名空间问题的主要内容,如果未能解决你的问题,请参考以下文章
在 WCF REST 服务 POST 方法中处理 Json 请求数据
从 IParameterInspector AfterCall 可以处理的 WCF Rest 服务返回带有消息的 HttpStatus 代码