簡體   English   中英

如何在C#中使用XML進行對象表示?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM