【问题标题】:C# XML - Collapse XML properties into a list/arrayC# XML - 将 XML 属性折叠到列表/数组中
【发布时间】:2013-05-02 03:10:27
【问题描述】:

我正在尝试序列化从 SOAP API 服务返回的 XML 文件。问题是他们已经定义了一个对象数组:

<soap_xml>
    ...
    <item __array="true">
        <some_property>text here<some_property/>
    </item>
    <item>
        <some_property>text here<some_property/>
    </item>
    ...
</soap_xml>

在反序列化此 XML 文件时,是否可以使用 XmlSerializer 将其压缩成一个数组,或者我必须手动处理整个 XML 文件。我不想手动处理 XML,因为它有 100 多个不同的属性/字段,但如果没有其他解决方案,那么我将不得不使用 XMLReader 并编写自定义序列化程序。

另外,要求 API 提供者更改返回 XML 的格式是不可能的。

【问题讨论】:

  • 澄清一下,这个 XML 是由 wsdl 定义的,还是只是作为字符串返回的?
  • 作为字符串返回。此 API 没有 WSDL 或架构。

标签: c# xml c#-4.0 xml-serialization


【解决方案1】:

您需要定义一个遵循 XML 文件架构的类 - 您是否有来自 API 提供者的架构?如果是这样,您可以使用 xsd.exe 生成一个可以加载它的类文件。

或者,您需要使用符合格式的适当 XML 属性来注释您自己的类。

【讨论】:

  • 不,提供者没有架构。我只有几个示例 xml 文档可供使用,以及根节点中所有子节点的列表,以及其他一些注释,包括:“如果存在属性 __array=”true”,则表明它应该是一组项目(即使它只是一个项目)”另外,我的类确实具有正确的 XML 属性,唯一的问题是“列表”元素被最后一个“列表”节点的内容覆盖,而我需要将所有列表节点压缩成数组或列表。
猜你喜欢
  • 2010-11-25
  • 2023-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多