[英]how to produce xml of list of objects using XElement in c#
I am trying to convert a list of objects into xml using XElement. 我正在尝试使用XElement将对象列表转换为xml。 My code is as below
我的代码如下
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));
};
I want an output like this 我想要这样的输出
<root>
<Employees>
<employee>Ali</employee>
<employee>Billy</employee>
</Employees>
</root>
but the output I m getting is 但是我得到的输出是
<root>
<Employees/>
<employee>Ali</employee>
<employee>Billy</employee>
</root>
I tried moving the Employees object inside the loop like below but that does not help either 我尝试将Employees对象移动到如下所示的循环内,但这无济于事
foreach (var employee in employees)
{
xml.Add(new XElement("Employees", new XElement("employee", employee.Name)));
};
Within your loop, you should call Add()
on your employees element rather than on your root: 在循环中,应该在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
constructor can handle IEnumerable
so you can add employee
elements at once while creating the parent Employees
. XElement
构造函数可以处理IEnumerable
因此您可以在创建父Employees
时立即添加employee
元素。 In fact, the entire XML can be created at once : 实际上,整个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.