C# 如何以格式化的方式序列化列表

C# 如何以格式化的方式序列化列表,c#,serialization,C#,Serialization,我在一个班级里有一张名单,比如 public class Root { public List<Sensor> sensorList { get;set; } } 公共类根目录 { 公开名单 { 获得;设置; } } 序列化此类时,XML如下所示 <?xml version="1.0" encoding="us-ascii"?> <Root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

我在一个班级里有一张名单,比如

public class Root
{
 public List<Sensor> sensorList
 {
    get;set;
 }
}
公共类根目录
{
公开名单
{
获得;设置;
}
}
序列化此类时,XML如下所示

<?xml version="1.0" encoding="us-ascii"?>
<Root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <sensorList>
    <Sensor>
      <Channel>1</Channel>
    </Sensor>
    <Sensor>
      <Channel>2</Channel>
    </Sensor>
  </sensorList>
</Root>
<Root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <Sensor>
      <Channel>1</Channel>
    </Sensor>
    <Sensor>
      <Channel>2</Channel>
    </Sensor>  
</Root>

1.
2.
但我需要这样的xml

<?xml version="1.0" encoding="us-ascii"?>
<Root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <sensorList>
    <Sensor>
      <Channel>1</Channel>
    </Sensor>
    <Sensor>
      <Channel>2</Channel>
    </Sensor>
  </sensorList>
</Root>
<Root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <Sensor>
      <Channel>1</Channel>
    </Sensor>
    <Sensor>
      <Channel>2</Channel>
    </Sensor>  
</Root>

1.
2.

如何使用list实现此目的?

在Root中的
sensorList
属性中添加一个XmlElement attibute可以获得所需的结果。检查下面的代码

class Program
{
    static void Main(String[] args)
    {
        Root temp = new Root();
        temp.sensorList = new List<Sensor>();
        temp.sensorList.Add(new Sensor() { Channel = "1"});
        temp.sensorList.Add(new Sensor() { Channel = "2" });

        XmlSerializer ser = new XmlSerializer(typeof(Root));
        XDocument mydoc = new XDocument();
        using (XmlWriter writer = mydoc.CreateWriter())
        {
            ser.Serialize(writer, temp);
        }

        Console.WriteLine(" After serialize :" + mydoc.ToString());

        using (XmlReader reader = mydoc.CreateReader())
        {
            Root newTemp = (Root)ser.Deserialize(reader);
            Console.WriteLine("After deserialize :" + newTemp.sensorList.Count);
        }
    }
}

public class Root
{
    [XmlElement(ElementName="Sensor")]
    public List<Sensor> sensorList
    {
        get;
        set;
    }
}


public class Sensor
{
    public string Channel;
}
类程序
{
静态void Main(字符串[]参数)
{
根温度=新根();
温度传感器列表=新列表();
添加(新传感器(){Channel=“1”});
添加(新传感器(){Channel=“2”});
XmlSerializer ser=新的XmlSerializer(typeof(Root));
XDocument mydoc=新XDocument();
使用(XmlWriter=mydoc.CreateWriter())
{
序列序列化(写入程序、临时文件);
}
WriteLine(“序列化后:+mydoc.ToString());
使用(XmlReader=mydoc.CreateReader())
{
Root newTemp=(Root)序列反序列化(reader);
WriteLine(“反序列化后:+newTemp.sensorList.Count”);
}
}
}
公共类根
{
[XmlElement(ElementName=“传感器”)]
公开名单
{
得到;
设置
}
}
公共类传感器
{
公共字符串频道;
}

能否显示序列化代码?是否要将其反序列化回来?您可能需要创建自定义序列化。我需要将其反序列化回来