C# XML解析到列表

C# XML解析到列表,c#,xml,parsing,C#,Xml,Parsing,和简单方法,返回列表: [XmlRoot("Employees")] public class Employee { [XmlElement("EmpId")] public int Id { get; set; } [XmlElement("Name")] public string Name { get; set; } } 公共静态列表SampleData() { 返回新列表() { 新雇员(){ Id=1, Name=“pierwszy” }, 新雇员(

和简单方法,返回列表:

[XmlRoot("Employees")]
public class Employee
{
    [XmlElement("EmpId")]
    public int Id { get; set; }

    [XmlElement("Name")]
    public string Name { get; set; }
}
公共静态列表SampleData()
{
返回新列表()
{
新雇员(){
Id=1,
Name=“pierwszy”
},
新雇员(){
Id=2,
Name=“drugi”
},
新雇员(){
Id=3,
Name=“trzeci”
}
};
}
Program.cs:

    public static List<Employee> SampleData()
    {
        return new List<Employee>()
        {
            new Employee(){
                Id   = 1,
                Name = "pierwszy"
            },
            new Employee(){
                Id   = 2,
                Name = "drugi"
            },
            new Employee(){
                Id   = 3,
                Name = "trzeci"
            }
        };
    }
var list=Employee.SampleData();
XmlSerializer ser=新的XmlSerializer(typeof(List));
TextWriter=newstreamwriter(“nowi.xml”);
序列序列化(编写器、列表);
我有一个文件结果:

   var list = Employee.SampleData();
   XmlSerializer ser = new XmlSerializer(typeof(List<Employee>));
   TextWriter writer = new StreamWriter("nowi.xml");
   ser.Serialize(writer, list);

1.
皮耶尔西
2.
德鲁吉
3.
特泽西
但我希望根元素的名称为:“Employees”,而不是“ArrayOfEmployee” 我怎样才能做到

我想这样做,因为我有一个文件,其中的结构如下所示:

<?xml version="1.0" encoding="utf-8"?>
<ArrayOfEmployee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Employee>
    <EmpId>1</EmpId>
    <Name>pierwszy</Name>
  </Employee>
  <Employee>
    <EmpId>2</EmpId>
    <Name>drugi</Name>
  </Employee>
  <Employee>
    <EmpId>3</EmpId>
    <Name>trzeci</Name>
  </Employee>
</ArrayOfEmployee>

...
...

您可以传递
XmlRootAttribute
来设置元素名称:

<Employees>
    <Employee>
    ...
    </Employee>
    <Employee>
    ...
    </Employee>
</Employees>
var root=新的XmlRootAttribute(“员工”);
XmlSerializer ser=新的XmlSerializer(typeof(List),root);
TextWriter=newstreamwriter(“nowi.xml”);
序列序列化(编写器、列表);
发件人:

。。。根参数允许您替换默认对象的 通过指定XmlRootAttribute获取信息;对象允许您 要设置不同的名称空间,元素名,依此类推


您可以传递
XmlRootAttribute
来设置元素名称:

<Employees>
    <Employee>
    ...
    </Employee>
    <Employee>
    ...
    </Employee>
</Employees>
var root=新的XmlRootAttribute(“员工”);
XmlSerializer ser=新的XmlSerializer(typeof(List),root);
TextWriter=newstreamwriter(“nowi.xml”);
序列序列化(编写器、列表);
发件人:

。。。根参数允许您替换默认对象的 通过指定XmlRootAttribute获取信息;对象允许您 要设置不同的名称空间,元素名,依此类推


您可以传递
XmlRootAttribute
来设置元素名称:

<Employees>
    <Employee>
    ...
    </Employee>
    <Employee>
    ...
    </Employee>
</Employees>
var root=新的XmlRootAttribute(“员工”);
XmlSerializer ser=新的XmlSerializer(typeof(List),root);
TextWriter=newstreamwriter(“nowi.xml”);
序列序列化(编写器、列表);
发件人:

。。。根参数允许您替换默认对象的 通过指定XmlRootAttribute获取信息;对象允许您 要设置不同的名称空间,元素名,依此类推


您可以传递
XmlRootAttribute
来设置元素名称:

<Employees>
    <Employee>
    ...
    </Employee>
    <Employee>
    ...
    </Employee>
</Employees>
var root=新的XmlRootAttribute(“员工”);
XmlSerializer ser=新的XmlSerializer(typeof(List),root);
TextWriter=newstreamwriter(“nowi.xml”);
序列序列化(编写器、列表);
发件人:

。。。根参数允许您替换默认对象的 通过指定XmlRootAttribute获取信息;对象允许您 要设置不同的名称空间,元素名,依此类推

只需更改如下

var root = new XmlRootAttribute("Employees");

XmlSerializer ser = new XmlSerializer(typeof(List<Employee>), root);
TextWriter writer = new StreamWriter("nowi.xml");
ser.Serialize(writer, list);
XmlSerializer ser=新的XmlSerializer(typeof(List),
新的XmlRootAttribute(“员工”);
就这些。但是,要获得一个干净的xml(没有xml声明,没有xsi或xsd名称空间等),您应该使用一些技巧

XmlSerializer ser = new XmlSerializer(typeof(List<Employee>), 
                                      new XmlRootAttribute("Employees"));
XmlSerializer ser=新的XmlSerializer(typeof(List),
新的XmlRootAttribute(“员工”);
TextWriter writer=新的StreamWriter(文件名);
var xmlWriter=xmlWriter.Create(writer,新的XmlWriterSettings(){omitxmldesclaration=true,Indent=true});
XmlSerializerNamespaces ns=新的XmlSerializerNamespaces();
加上(“,”);
序列化(xmlWriter,list,ns);
只需更改如下

var root = new XmlRootAttribute("Employees");

XmlSerializer ser = new XmlSerializer(typeof(List<Employee>), root);
TextWriter writer = new StreamWriter("nowi.xml");
ser.Serialize(writer, list);
XmlSerializer ser=新的XmlSerializer(typeof(List),
新的XmlRootAttribute(“员工”);
就这些。但是,要获得一个干净的xml(没有xml声明,没有xsi或xsd名称空间等),您应该使用一些技巧

XmlSerializer ser = new XmlSerializer(typeof(List<Employee>), 
                                      new XmlRootAttribute("Employees"));
XmlSerializer ser=新的XmlSerializer(typeof(List),
新的XmlRootAttribute(“员工”);
TextWriter writer=新的StreamWriter(文件名);
var xmlWriter=xmlWriter.Create(writer,新的XmlWriterSettings(){omitxmldesclaration=true,Indent=true});
XmlSerializerNamespaces ns=新的XmlSerializerNamespaces();
加上(“,”);
序列化(xmlWriter,list,ns);
只需更改如下

var root = new XmlRootAttribute("Employees");

XmlSerializer ser = new XmlSerializer(typeof(List<Employee>), root);
TextWriter writer = new StreamWriter("nowi.xml");
ser.Serialize(writer, list);
XmlSerializer ser=新的XmlSerializer(typeof(List),
新的XmlRootAttribute(“员工”);
就这些。但是,要获得一个干净的xml(没有xml声明,没有xsi或xsd名称空间等),您应该使用一些技巧

XmlSerializer ser = new XmlSerializer(typeof(List<Employee>), 
                                      new XmlRootAttribute("Employees"));
XmlSerializer ser=新的XmlSerializer(typeof(List),
新的XmlRootAttribute(“员工”);
TextWriter writer=新的StreamWriter(文件名);
var xmlWriter=xmlWriter.Create(writer,新的XmlWriterSettings(){omitxmldesclaration=true,Indent=true});
XmlSerializerNamespaces ns=新的XmlSerializerNamespaces();
加上(“,”);
序列化(xmlWriter,list,ns);
只需更改如下

var root = new XmlRootAttribute("Employees");

XmlSerializer ser = new XmlSerializer(typeof(List<Employee>), root);
TextWriter writer = new StreamWriter("nowi.xml");
ser.Serialize(writer, list);
XmlSerializer ser=新的XmlSerializer(typeof(List),
新的XmlRootAttribute(“员工”);
就这些。但是,要获得一个干净的xml(没有xml声明,没有xsi或xsd名称空间等),您应该使用一些技巧

XmlSerializer ser = new XmlSerializer(typeof(List<Employee>), 
                                      new XmlRootAttribute("Employees"));
XmlSerializer ser=新的XmlSerializer(typeof(List),
新的XmlRootAttribute(“员工”);
TextWriter writer=新的StreamWriter(文件名);
var xmlWriter=xmlWriter.Create(writer,新的XmlWriterSettings(){omitxmldesclaration=true,Indent=true});
XmlSerializerNamespaces ns=新的XmlSerializerNamespaces();
加上(“,”);
serial.Serialize(xmlwrite