0

サード パーティ プロバイダーから受け取った XML ファイルがあります。

従来の方法では構造化されておらず、基本的にルートがありません:-

<DG_X
    attrib1="Test2"
    attrib2="1"
    attrib3="12345">TEST-23456</DG_X>
<DG_Y
    attrib1="test"
    attrib2="Example Text"
    attrib3="1"
    attrib4="3"
    attrib5= 1
    attrib6="12412342134">Test-1234567</DG_Y>

最初の要素「DG_X」のみに関心があり、その値「TEST-23456」のみが必要です。

De-Serialistaion は初めてで、これまでのところ私の試みは失敗しています:-

[Serializable]
    [XmlRoot("DG_X")]
    public class DM
    {
        [XmlText]
        public string Value { get; set; }

        [XmlAttribute]
        public string attrib1 { get; set; }

        [XmlAttribute]
        public string attrib2 { get; set; }

        [XmlAttribute]
        public string attrib3 { get; set; }

        [XmlIgnore]
        [XmlElement("DG_Y")]
        public string dg_key { get; set; }

    }

問題は 2 番目の要素の読み取りにあります。コンパイラは、ルート要素が 2 つあるとアドバイスします。この問題に取り組む最善の方法は何ですか?

4

2 に答える 2

1

以下はあなたの例でうまくいくはずです


 XmlReader xR = XmlReader.Create(@"example.xml");
            xR.MoveToContent();

            XmlSerializer xser = new XmlSerializer(typeof(DM));
            DM dmInstance = xser.Deserialize(xR) as DM;

基本的に、XmlReader を使用して自分自身を最初の要素に配置し、それを使用してオブジェクト インスタンスに逆シリアル化しています。

お役に立てれば、

于 2013-11-11T16:58:50.620 に答える