当前位置: 首页 > 编程语言 > .NET综合 > 正文

Linq To Xml学习 - 3.查询、更新、删除

时间:2010-12-02 博客园 Q.Lee.lulu

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>