我正在尝试使用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)));
};
答案 0 :(得分:2)
在你的循环中,你应该在你的员工元素而不是你的根上调用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);
答案 1 :(得分:2)
XElement
构造函数可以处理IEnumerable
,因此您可以在创建父employee
时一次添加Employees
个元素。实际上,可以立即创建整个XML:
var xml = new XElement("root",
new XElement("Employees",
employees.Select(e => new XElement("employee", e.Name))
)
);