2011-12-19 74 views
2

XML文件如何使用Linq to XML更新XML文件?

<?xml version="1.0" encoding="utf-8"?> 
<Section xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="Information Section"> 
    <ID></ID> 
    <alternateID /> 
    <familyName></familyName> 
    <givenName></givenName> 
    <birthDate></birthDate> 
    <age></age> 
    <height /> 
    <weight /> 
    <sex></sex> 
    <Address> 
    <street1 /> 
    <street2 /> 
    <city /> 
    <state /> 
    <zipCode /> 
    <country /> 
    </Address> 
</Section> 

我有這個空的XML模板。我想知道如何使用LInq更新/插入此xml元素中的值?

那是什麼,我想......需要的方向...

var Doc = XDocument.Load("Info.xml"); 
    var items = from i in Doc.Descendants("Section") 
       select new 
       { 
        ID = p.Element("ID").Value 
       } 
    foreach (var item in items) 
      item.id = "VALUE" 
?????? 

回答

3

您正在創建匿名類型對象的列表與

from i in Doc.Descendants("Section") 
select new { ... } 

相反,創建元素的一個列表更新:

var items = from i in Doc.Descendants("Section") 
    select i; 

foreach (var item in items) 
{ 
    item.Element("ID").Value = "VALUE"; 
    item.Element("Foo").Value = "Foo"; 
} 
Doc.Save(...); 

請注意,XML區分大小寫。

+0

它有任何選項像Doc.SaveAs ..我不想保存原始模板中的內容。 – User13839404 2011-12-19 16:45:42

+0

是的,只是使用不同的文件名。沒有'SaveUnderOldFilename()',因爲以前的名字沒有被存儲。 – 2011-12-19 16:47:08

+0

謝謝。有效。但有一個疑問..我必須再次查詢元素街1? Street1元素位於地址元素下。例如。以Doc.Descendants(「地址」)或其他方式構成我?見上面的XML文件 – User13839404 2011-12-19 18:48:02