使用元素和属性将List <object>写入XML文件

时间:2019-01-23 18:03:47

标签: c# xml list

我有以下课程:

[XmlType("supervisor")]
public class Supervisor
{
   [XmlAttribute("id")]
    public string Id { set; get; }

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

    [XmlElement("Contract")]
    public int Contracts { set; get; }

    [XmlElement("Volume")]
    public long Volume { set; get; }

    [XmlElement("Average")]
    public int Average { set; get; }
}

从XML文件读取:

 <digital-sales xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <supervisor id="1236674">
        <Name>Hiroki</Name>
        <Contract>11</Contract>
        <Volume>1036253</Volume>
        <Average>94205</Average>
    </supervisor>
    <supervisor id="123459">
        <Name>Ayumi</Name>
        <Contract>5</Contract>
        <Volume>626038</Volume>
        <Average>125208</Average>
    </supervisor> ...
 </digital-sales>
在代码中

我创建List并对其进行处理。 现在我想将列表写入XML文件,同时保持 相同的XML结构。我怎么做?

How to use xml id to fill class object?

1 个答案:

答案 0 :(得分:1)

这是代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Serialization;


namespace ConsoleApplication98
{
    class Program
    {
        const string FILENAME = @"c:\temp\test.xml";
        static void Main(string[] args)
        {
            XmlReader reader = XmlReader.Create(FILENAME);
            XmlSerializer serializer = new XmlSerializer(typeof(DigitalSales));
            DigitalSales digitalSales = (DigitalSales)serializer.Deserialize(reader);

            reader.Close();

            XmlWriter writer = XmlWriter.Create(FILENAME);
            serializer.Serialize(writer, digitalSales);

        }
    }


    [XmlRoot("digital-sales")]
    public class DigitalSales
    {
        [XmlElement("supervisor")]
        public List<Supervisor> supervisor { get; set; }

    }
    [XmlRoot("supervisor")]
    public class Supervisor
    {
        [XmlAttribute("id")]
        public string Id { set; get; }

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

        [XmlElement("Contract")]
        public int Contracts { set; get; }

        [XmlElement("Volume")]
        public long Volume { set; get; }

        [XmlElement("Average")]
        public int Average { set; get; }
    }


}