Pertanyaan Deserializing XML, bagaimana cara mengakses atribut?


Saya memiliki beberapa XML yang saya konsumsi dan deserializing.

<Foo>
    <Bars Baz="9">
        <Bar>...</Bar>
        <Bar>...</Bar>
    </Bars>
</Foo>

Saat ini saya deserialize ke kelas ini:

[XmlRoot("Foo")]
public class Foo
{
    public Foo() { }

    [XmlArrayItem("Bar")]
    public Bar[] Bars { get; set; }
}

Ini berfungsi dengan baik, kecuali bahwa saya tidak menangkap nilai @Baz. saya ingin menambahkan Baz sebagai milik Foo, tapi aku tidak yakin caranya. Atribut apa yang akan saya atur pada saya Baz properti untuk deserialize dengan benar xml?

[WhatAttributeGoesHere("?")]
public int Baz { get; set; }

5
2018-05-14 18:10


asal


Jawaban:


Biasanya:

[XmlAttribute]

(dengan nama opsional, namespace, dll) adalah apa yang Anda cari.

Namun, Anda tidak dapat menggunakannya langsung pada koleksi. Anda akan perlu untuk memiliki kelas pembungkus untuk Bar, dengan atribut dan:

public class Foo {
    public BarWrapper Bars {get;set;}
}
public class BarWrapper {
    private readonly List<Bar> bars = new List<Bar>();
    [XmlElement("Bar")]
    public List<Bar> Items {get{return bars;}}

    [XmlAttribute]
    public int Baz {get;set;}
}
public class Bar {...}

9
2018-05-14 18:13