【问题标题】:Best way to parse unknown XML fom web service从 Web 服务解析未知 XML 的最佳方法
【发布时间】:2012-03-27 01:24:15
【问题描述】:

我正在处理一个需要解析来自 Web 服务的 XML 响应的项目​​。我对响应的结构一无所知。我获得了 XML 元素来收集数据,并且数据是关系型的,因此元素代表关系表中的列。

我尝试了可以​​解析方法名称及其响应类型的 WSDL 方法。基于此,我可以使用 NSXMLParser 进行解析。问题是我没有找到任何可以为我执行此操作的 WSDL 解析器。

有什么建议吗?!

谢谢,

吉格尼什

【问题讨论】:

  • 只有一种格式?还是不断变化的动态?
  • web 服务 url 和 coumn 名称由用户提供,所以我必须获取 web 服务 url,调用它,获取响应并解析它并创建关系表,其中列(XML 文件中的元素或属性)由用户指定

标签: objective-c web-services wsdl xml-parsing


【解决方案1】:

我喜欢在GitHub 上使用这个开源库 它将允许您将 XML 字符串转换为您可以动态使用的 NSDictionary。

【讨论】:

  • 嘿阿米特,感谢您的回复!我想尝试一下,但问题是有时 xml 文件可能太大而无法放入内存...我必须看看它是否可以只返回没有数据的结构.....
  • 如果您的文件非常大,我会查看libxml2。它可以处理非常大的文件,并且比NSXMLParser 具有更好的性能。除了自己走过去,没有太多其他选择。也许创建一个你需要的所有标签的NSMutableArray,然后构建一个这样的结构。
  • 主要问题是确定响应的结构,因为例如,某些标签可能存在于一行(记录)中,但在其他行中缺失意味着该标签没有值。所以我不能只需将值放在相应的数组中即可。所以我确定结构的唯一方法是在 WSDL 中使用输出类型...
  • 使用数组重建没有数据的 XML 怎么样?这样它仍然是动态的。您实际上只是将整个结构加载到内存中。
  • 嗨阿米特,感谢您的回复!!!我只是根据它的嵌套级别提取了一组元素。我通过扫描xml文件记录了元素的相对嵌套级别。我开始扫描值。根据嵌套级别何时超出元素的嵌套级别限制,我决定何时开始和停止一组值(即一行)。
猜你喜欢
  • 2018-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-21
相关资源
最近更新 更多