繁体   English   中英

如何将xml序列化为带有列表的类

[英]How to serialize xml to class with list

我有这个XML

<KitContent>
  <MsiData>
    <FileName>file1</FileName>
    <BaseProductVersion>1.1.0.0</BaseProductVersion>
  </MsiData>
  <MsiData>
    <FileName>file2</FileName>
    <BaseProductVersion>1.1.0.0</BaseProductVersion>
  </MsiData>
</KitContent>

我想将其序列化为一个类,该类应如何显示?

public class KitContent
{
    public List<MsiData> ???? { get; set; }

    public KitContent()
    {
        ??? = new List<MsiData>();
    }
}


public class MsiData
{
    public string FileName { get; set; }
    public string BaseProductVersion { get; set; } 
}

}

'???' 我在上面的课里是我的问题

我不确定你想要什么,但是??? 可以是任何标识符。 如果要将这个xml解析为C#类,恕我直言,最好的方法是使用Xml.Serialization命名空间。

这是示例:

class Program
    {
        static void Main(string[] args)
        {
            string xml = "<KitContent>" +
                          "<MsiData>" +
                            "<FileName>file1</FileName>" +
                            "<BaseProductVersion>1.1.0.0</BaseProductVersion>" +
                          "</MsiData>" +
                          "<MsiData>" +
                            "<FileName>file2</FileName>" +
                            "<BaseProductVersion>1.1.0.0</BaseProductVersion>" +
                          "</MsiData>" +
                        "</KitContent>";

            XmlSerializer serializer = new XmlSerializer(typeof(KitContent));
            KitContent kitContent = (KitContent)serializer.Deserialize(XmlReader.Create(new StringReader(xml)));

            Console.WriteLine(kitContent.anyIdentifier[0].FileName);
            Console.WriteLine(kitContent.anyIdentifier[0].OtherName);
            Console.WriteLine(kitContent.anyIdentifier[1].FileName);
            Console.WriteLine(kitContent.anyIdentifier[1].OtherName);
        }
    }

    [XmlRoot("KitContent")]
    public class KitContent
    {
        [XmlElement("MsiData")]
        public List<MsiData> anyIdentifier { get; set; }
    }

    public class MsiData
    {
        public string FileName { get; set; }

        [XmlElement("BaseProductVersion")]
        public string OtherName { get; set; }
    }

如果您的属性名称与xml中的Element相同,则无需将属性放在该属性上。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM