2017-03-25 8 views
0

XElementを使用してオブジェクトのリストをxmlに変換しようとしています。私のコードはようCでXElementを使用してオブジェクトのリストのxmlを生成する方法#

var employees = new List<Employee>(); 

employees.Add(new Employee("1", " Ali","",1000)); 
employees.Add(new Employee("2", "Billy","",1001)); 

var xml = new XElement("root"); 
xml.Add(new XElement("Employees")); 

foreach (var employee in employees) 
    { 
    xml.Add(new XElement("employee", employee.Name)); 
    }; 

下回っている私は、この

<root> 
<Employees> 
    <employee>Ali</employee> 
    <employee>Billy</employee> 
</Employees> 
</root> 

のような出力をしたいが、私は取得mの出力は、私は以下のようにループ内で従業員オブジェクトを移動しようとした

<root> 
<Employees/> 
    <employee>Ali</employee> 
    <employee>Billy</employee> 
</root> 

ですしかし、どちらも役に立たない。

foreach (var employee in employees) 
    { 
    xml.Add(new XElement("Employees", new XElement("employee", employee.Name))); 

    }; 

答えて

2

XElementコンストラクタはIEnumerableを扱うことができます。実際、XML全体を一度に作成することができます。

var xml = new XElement("root", 
    new XElement("Employees", 
     employees.Select(e => new XElement("employee", e.Name)) 
    ) 
); 
+0

これは完璧です。ありがとう!! – rumi

2

あなたのループ内では、あなたがあなたの従業員の要素ではなく、あなたのルートにAdd()を呼び出す必要があります:親Employeesを作成中に一度employee要素を追加できるように

var employees = new List<Employee>(); 

employees.Add(new Employee("1", " Ali","",1000)); 
employees.Add(new Employee("2", "Billy","",1001)); 

var xml = new XElement("root"); 
var employeesElement = new XElement("Employees"); 

foreach (var employee in employees) 
{ 
    employeesElement.Add(new XElement("employee", employee.Name)); 
} 
xml.Add(employeesElement); 
関連する問題