【发布时间】:2011-11-07 03:37:42
【问题描述】:
我正在尝试加载由 Employee 对象集合组成的 XML 数据。以下函数适用于 String 和 Int 等简单数据类型的属性。我想知道如何导入复杂类型的数据类型。例如,
这个功能很好用:
private void LoadData()
{
XDocument employeesDoc = XDocument.Load("Employees.xml");
List<Employee> data = (from employee in employeesDoc.Descendants("Employee")
select new Employee
{
FirstName= employee.Attribute("FirstName").Value,
LastName = employee.Attribute("LastName ").Value,
PhoneNumber = employee.Attribute("PhoneNumber").Value
}).ToList();
Employees.ItemsSource = data;
}
这是 Employee 类:
public class Employee
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string PhoneNumber { get; set; }
public Department Department { get; set; }
}
这是部门类:
public class Department
{
public int Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public Employee Manager { get; set; }
}
所以,如果我的 XML 文件看起来像这样:
<Employees>
<Employee FirstName="John" LastName="Summers" PhoneNumber="703-548-7841" Department="Finance"></Employee>
<Employee FirstName="Susan" LastName="Hughey" PhoneNumber="549-461-7962" Department="HR"></Employee>
那么,如果 Department 是一个复杂对象并且它是 XML 文件中的一个字符串,我该如何更改我的 LoadData() 函数以将其导入到我的 Employee 对象集合中?
【问题讨论】:
-
这一切都取决于
Department的序列化方式以及您的XML 是什么样的——这里没有包罗万象的答案。如果Department仍然只是一个字符串,那么解析与 Linq to XML 无关。 -
@BrokenGlass - 感谢您的回复。从 XML 文件中可以看到,Department 是作为字符串输入的。这些 XML 文件将由非技术人员创建,因此所有内容都将采用字符串格式。因此,鉴于此,我该如何解决这个问题?当我的第一个解决方案是 LINQ to XML 时,为什么这与 LINQ to XML 无关,不是吗?
-
因为它仅取决于如何解析该字符串并将其映射到您的
Department对象的属性 - 而字符串解析与 Linq to XML 无关 -
那么,鉴于上述 XML,我如何将其映射到我的 Employee 类中?这可能吗?
标签: c# xml linq linq-to-xml