如何在c#中使用XML来表示对象
本文关键字:XML 表示 对象 | 更新日期: 2023-09-27 18:01:23
首先,我想先说明一下,在此之前我从未使用过XML或c#,所以如果我的问题没有意义,我很抱歉。
我的任务是修改一个现有的c#程序。
程序当前所做的是读入一个文本文件,其中包含如下条目:
员工ID- name -主管ID
7;Jill;0
3;Joe;7
6;Bob;3
上面的文本对应于员工-主管关系,例如,Joe的员工ID是3,他向Jill报告。Bob的员工ID是6,他向Joe报告。
我用Java写了一个程序,它接受上述文本文件并将它们转换为XML文件,如下所示(遵循上面的示例):
<Employees>
<Employee_Name> Jill
<Employee_Name>Joe
<Employee_Name>Bob</Employee_Name>
</Employee_Name>
</Employee_Name>
</Employees>
我的问题如下:
我怎么能把这个XML层次结构,并使它对我的c#程序有用,在那里它知道的关系?
例如,其中一个功能是让程序自动发送电子邮件给所有员工的主管,以及由同一直接经理监督的任何人。
谢谢!
你可以使用Linq to XML来查询你的文档:
首先,你需要一个类来存储数据:
class Employee
{
public string Name { get; set; }
public List<Employee> Subordinates { get; set; }
}
然后,您可以使用XElement.Parse()
来解析您的xml字符串或XElement.Load(filePath)
来从文件加载它。
var xml = XElement.Parse("<Employees> <Employee_Name> Jill <Employee_Name>Joe <Employee_Name>Bob</Employee_Name> </Employee_Name> </Employee_Name></Employees>");
和递归算法获取数据:
static List<Employee> GetEmployees(XElement xml)
{
return (from e in xml.Elements("Employee_Name")
let name = e.Nodes().First().ToString()
select new Employee { Name = name, Subordinates = GetEmployees(e) }).ToList();
}
可以在xml中调用:
var employees = GetEmployees(xml);
对于您的示例数据,您将收到一个Employee (Jill)和一个下属(Joe),该下属也将有另一个下属(Bob)。