2011-12-19 92 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