How do you deserialize XML with dynamic element names?

后端 未结 2 759
佛祖请我去吃肉
佛祖请我去吃肉 2020-12-04 03:53

My XML looks like follows:


    1250.00
    1900.00

This

2条回答
  •  再見小時候
    2020-12-04 04:25

    Dynamic element names can be simple to process using the XmlSerializer.UnknownElement event handler.

    For example, we have following xml:

    1250.00 1900.00

    and classes:

    [XmlRoot("main")]
    public class Main
    {
        public List Rates { get; set; }
    }
    
    public class Rate
    {
        public string Value { get; set; }
    }
    

    Do deserialize:

    var xs = new XmlSerializer(typeof(Main));
    // add event handler
    xs.UnknownElement += Xs_UnknownElement;
    
    Main main;
    using (var fs = new FileStream("test.xml", FileMode.Open))
        main = (Main)xs.Deserialize(fs);
    

    The event handler code:

    private void Xs_UnknownElement(object sender, XmlElementEventArgs e)
    {
        Main main = (Main)e.ObjectBeingDeserialized;
    
        foreach (XmlNode node in e.Element.ChildNodes)
            main.Rates.Add(new Rate { Value = node.InnerText });
    }
    

提交回复
热议问题