0

最初に、これまで XML や C# を使用したことがないことを前置きしておきたいので、質問が意味をなさない場合はお詫び申し上げます。

私は、既存の C# プログラムを変更する任務を負っています。

プログラムが現在行っていることは、次のようなエントリを持つテキスト ファイルを読み取ることです。

従業員 ID-名前-監督者 ID

7;Jill;0
3;Joe;7
6;Bob;3

上記のテキストは、従業員と監督者の関係に対応しています。たとえば、Joe の従業員 ID は 3 で、彼は Jill にレポートします。Bob の従業員 ID は 6 で、Bob は Joe にレポートします。

上記のテキスト ファイルを取得して XML ファイルに変換するプログラムを Java で作成しました (上記の例に従います)。

<Employees>
  <Employee_Name> Jill
           <Employee_Name>Joe 
                 <Employee_Name>Bob</Employee_Name>
           </Employee_Name>
   </Employee_Name>
</Employees>

私の問題は次のとおりです。

この XML 階層を取得して、関係を認識している C# プログラムで使用できるようにするにはどうすればよいでしょうか?

たとえば、機能の 1 つは、すべての従業員の上司、および同じ直属の上司によって監督されているすべての人に、プログラムに自動的に電子メールを送信させることです。

ありがとうございました!

4

1 に答える 1

0

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);

サンプルデータの場合、1人の部下(Joe)と1人の部下(Bob)を持つ1人の従業員(Jill)を受け取ります。

于 2013-02-27T22:25:39.837 に答える