簡體   English   中英

如何在C#中使用XElement生成對象列表的xml

[英]how to produce xml of list of objects using XElement in c#

我正在嘗試使用XElement將對象列表轉換為xml。 我的代碼如下

 var employees = new List<Employee>();

 employees.Add(new Employee("1", " Ali","",1000));
 employees.Add(new Employee("2", "Billy","",1001));

 var xml = new XElement("root");
 xml.Add(new XElement("Employees"));

 foreach (var employee in employees)
  {
    xml.Add(new XElement("employee", employee.Name));
  };

我想要這樣的輸出

<root>
 <Employees>
   <employee>Ali</employee>
   <employee>Billy</employee>
 </Employees>
</root>

但是我得到的輸出是

 <root>
 <Employees/>
   <employee>Ali</employee>
   <employee>Billy</employee>
</root>

我嘗試將Employees對象移動到如下所示的循環內,但這無濟於事

 foreach (var employee in employees)
  {
    xml.Add(new XElement("Employees", new XElement("employee", employee.Name)));

  };

在循環中,應該在employee元素而不是root上調用Add()

 var employees = new List<Employee>();

 employees.Add(new Employee("1", " Ali","",1000));
 employees.Add(new Employee("2", "Billy","",1001));

 var xml = new XElement("root");
 var employeesElement = new XElement("Employees");

 foreach (var employee in employees)
 {
    employeesElement.Add(new XElement("employee", employee.Name));
 }
 xml.Add(employeesElement);

XElement構造函數可以處理IEnumerable因此您可以在創建父Employees時立即添加employee元素。 實際上,整個XML可以一次創建:

var xml = new XElement("root",
    new XElement("Employees",
        employees.Select(e => new XElement("employee", e.Name))
    )
);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM