3

我正在尝试反序列化来自 Web 服务的 XML,但我不知道如何告诉序列化程序如何处理这段 xml:

<Movimientos>
<Movimientos>
<NOM_ASOC>pI22E7P30KWB9KeUnI+JlMRBr7biS0JOJKo1JLJCy2ucI7n3MTFWkY5DhHyoPrWs</NOM_ASOC>
<FEC1>RZq60KwjWAYPG269X4r9lRZrjbQo8eRqIOmE8qa5p/0=</FEC1>
<IDENT_CLIE>IYbofEiD+wOCJ+ujYTUxgsWJTnGfVU+jcQyhzgQralM=</IDENT_CLIE>
</Movimientos>
<Movimientos>

如您所见,子标签使用与其父标签相同的标签,我想这是错误的,但是 web 服务是由外部公司提供的并且不会改变它,有没有办法或任何库来整理 XML 或者如何我在我的类上使用了一个属性,以便序列化程序正确?谢谢你的帮助。

4

2 回答 2

5

序列化程序应该没问题 - 问题可能只是一个类不能有一个与类本身同名的属性。所以XmlElementAttribute用来匹配它:

[XmlRoot("Movimientos")]
public class Movimientos
{
    [XmlElement("Movimientos")]
    public SomeOtherClass SomeOtherProperty { get; set; }
}

public class SomeOtherClass
{
    public string NOM_ASOC { get; set; }
    public string FEC1 { get; set; }
    public string IDENT_CLIE { get; set; }
}

仅供参考,XML 实际上并没有错;规范中没有规定子元素不能与其父元素同名。这可能不寻常,但仍然有效。

于 2010-05-12T22:09:51.573 回答
0

如果.Net 的 XML 序列化程序实际上没有对它进行反序列化,最好编写自己的类来解析它。您可以使用 System.Xml 或 System.Xml.Linq(更简单)命名空间。

于 2010-05-12T22:11:22.797 回答