Linq To Xml學習 - 3.查詢、更新、刪除

作者: Q.Lee.lulu  來源: 博客園  發布時間: 2008-09-23 17:13  閱讀: 44762 次  推薦: 6   原文鏈接   [收藏]  
 

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>
6
0
 
標簽:linq xml
 
 

文章列表

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()