[英]How to use XML for object representation in C#?
首先,我只是想以此開頭,在此之前我從未使用過XML或C#,因此如果我的問題沒有道理,我深表歉意。
我的任務是修改現有的C#程序。
程序當前所做的是讀取具有以下內容的文本文件:
員工ID-名稱-主管ID
7;Jill;0
3;Joe;7
6;Bob;3
上面的文本對應於Employee-Supervisor關系,例如,Joe的雇員ID為3,他向Jill報告。 鮑勃的員工ID為6,他向喬報告。
我已經用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);
對於您的樣本數據,您將收到一個雇員(Jill)和一個下屬(Joe),該雇員也將有另一個下屬(Bob)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.