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 に答える