LINQ to XML:利用LIQN萃取XML文件內容元素

由於XML文件是一群元素的集合,因此可以透過 LINQ 查詢 XML 文件內容,也就是XML to LINQ , 命名空間System.Xml.Linq當中的XML類別基本上是為了支援LINQ運算而發展出來的一組 XML API,XElement的Elements()方法回傳值是一種IEnumerable型別物件,Attributes方法其回傳的屬性集合物件亦是一種 IEnumerable<xattribute> 型別,這些物件均是IEnumerable型別,因此,能夠同時支援LINQ運算式的查詢作業。

除了將 LINQ 運算式直接運用於XML元素的查詢作業, XML to LINQ亦提供了相關的擴充方法,讓開發人員可以直接透過這些擴充方法使用LINQ技術。考慮以下的XML文件:


<Books xmlns="http://kangting.tw">
  <Book>
    <BookTitle Type="Chineses" xmlns="">HTML5完美風暴</BookTitle>
    <BookTitle Type="English" xmlns="">Pro HTML5</BookTitle>
  </Book>
  <Book>
    <BookTitle Type="Chineses" xmlns="">HTML5從零開始</BookTitle>
    <BookTitle Type="English" xmlns="">Beginning HTML5</BookTitle>
  </Book>
  <Book>
    <BookTitle Type="Chineses" xmlns="">現代網頁設計</BookTitle>
    <BookTitle Type="English" xmlns="">Modern Web Design</BookTitle>
  </Book>
</Books>

將這個文件載入,並且儲存於變數 xbook,利用以下的語法可以將其中的內容取出:

IEnumerable<XElement> books = xbook.Elements();
IEnumerable<XElement> rows = from row in books  select row ;

以下的雙重迴圈可以進一步取出其中的每本書中英文標題:

foreach (XElement row in rows)
{
IEnumerable<XElement> ele =
                    from title in row.Elements()   
                    select title;
     foreach (XElement x in title)
     {
        // x 為元素內容
     }               
}

LINQ的物件查詢功能非常強大,一旦XML轉換成為IEnumerable <XElement>之後,除了逐一取出其中的元素,我們同樣能夠經由LINQ運算式,存取其中的特定元素,例如以下的 LINQ 敘述:

IEnumerable<XElement> rows =
                from row in xEle. books()
                select row.Element("Title");

在這段語法中,select子句將每一個元素視為一筆資料,而其中的子元素則是這一筆資料的獨立欄位,因此,select子句的Title名稱將其中的Title元素萃取出來,最後列出所有的Title字串。

LINQ to XML:XDocument & XElement 簡述 
LINQ to XML:關於 LINQ to XML 
LINQ to XML:XML命名空間與元素識別名稱 
LINQ to XML:XML內容元素 
LINQ to XML:XML文件載入與輸出 
LINQ to XML:載入 XML 內容 
LINQ to XML:輸出XML文件 
LINQ to XML:列舉XML元素 
LINQ to XML:存取特定XML元素 
LINQ to XML:新增XML元素 
LINQ to XML:元素屬性 
LINQ to XML:利用LIQN萃取XML文件內容元素 
LINQ to XML:元素存取與轉換 




沒有留言: