Linq To Xml学习 - 3.查询、更新、删除
文章最后有该示例的XML文档。
查找具有特定属性的元素
XElement root = XElement.Load ("PurchaseOrder.xml");
IEnumerable address =
from el in root.Elements("Address")
where (string)el.Attribute("Type") == "Billing"
select el;
foreach (XElement el in address)
Console.WriteLine(el);
输出为:
<Address Type="Billing">
<Name>Tai YeeName>
<Street>8 Oak AvenueStreet>
<City>Old TownCity>
<State>PAState>
<Zip>95819Zip>
<Country>USACountry>
Address>
内存中 XML 树修改与函数构造
就地修改 XML 树是更改 XML 文档形状的传统方法。 典型的应用程序将文档 加载到数据存储区(如 DOM 或 LINQ to XML);使用编程接口插入节点、删除 节点或更改节点的内容;然后将 XML 保存到文件或通过网络传输。
LINQ to XML 允许使用另一种可在许多方案中使用的方法:函数构造。 函数 构造将修改数据视为转换问题,而不是数据存储区的具体操作。 如果您采用某 种数据表示形式并有效地将其从一种形式转换为另一种形式,其结果等效于您采 用一个数据存储区并对其以某种方式进行操作以采用另一种形状。 函数构造方 法的关键是将查询的结果传递给 XDocument 和 XElement 构造函数。
此示例假设您想修改下面的简单 XML 文档,使属性变为元素。 本节首先介 绍传统的就地修改方法。 然后显示函数构造方法。XML文件:
xml version="1.0" encoding="utf-8" ? >
<Root Data1="123" Data2="456">
<Child1>ContentChild1>
Root>
您可以编写一些过程代码以便从属性创建元素,然后删除属性,如下所示:
XElement root = XElement.Load("Data.xml");
foreach (XAttribute att in root.Attributes()) {
root.Add(new XElement(att.Name, (string)att));
}
root.Attributes().Remove();
Console.WriteLine(root);
输出结果为:
<Root>
<Child1>ContentChild1>
<Data1>123Data1>
<Data2>456Data2>
Root>