2012-04-11 36 views
1

我使用的是iOS上KissXML解析从WCF REST Web服务返回数据的XML(用C#)使用KissXML处理WCF REST Web服务 - 我应该如何处理命名空间问题

我有麻烦的是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应用程序,所以我可以更改服务以尝试删除或更改名称空间(指示如何执行此操作的赞赏),或者一旦获取数据,我就可以将其从我的字符串中剔除到电话。

这两个选项都觉得有点像黑客 - 有更好的选择吗?

回答

0

我会建议将defaultOutgoingResponseFormat更改为Json, 并处理它而不是xml。

为什么?读这里: http://www.json.org/xml.html

而且它也会解决你的问题:)