LINQ to XML 軸概觀

建立 XML 樹狀結構,或將 XML 文件載入 XML 樹狀結構後,您可以進行查詢以尋找元素與屬性,並擷取其值。 您可以透過「座標軸方法」擷取集合,也稱為「座標軸」。 有些座標軸是 XElementXDocument 類別中,傳回 IEnumerable<T> 集合的方法。 有些座標軸是 Extensions 類別中的擴充方法。 作為擴充方法實作的座標軸會在集合上運算,然後傳回集合。

XElement 類別概觀中所述,XElement 物件代表單一元素節點。 項目的內容可能很複雜 (有時候稱為結構化的內容),或者,它可能是簡單的項目。 簡單的項目可以是空的,也可以包含值。 如果節點包含結構化的內容,您可以使用各種座標軸方法來擷取子代項目的列舉。 最常使用的座標軸方法為 ElementsDescendants

除了會傳回集合的座標軸方法之外,還有其他兩個常用於 LINQ to XML 查詢的方法。 Element 方法會傳回單一的 XElementAttribute 方法會傳回單一的 XAttribute

就許多用途而言,LINQ 查詢會提供最強大的方式來檢查樹狀結構、從其中擷取資料並加以轉換。 LINQ 查詢會在實作 IEnumerable<T> 的物件上運作,而 LINQ to XML 軸會傳回 XElement 集合的 IEnumerable<T>XAttribute 集合的 IEnumerable<T>。 您需要這些集合,才能執行您的查詢。

除了擷取項目和屬性之集合的座標軸方法之外,還有其他座標軸方法可讓您仔細逐一查看樹狀結構。 例如,您可以使用樹狀結構的節點,而不是處理項目和屬性。 這些節點是比項目和屬性還要細微的位移單位等級。 使用節點時,您可以檢查 XML 註解、文字節點、處理指示等等。 這個功能對於撰寫字組處理器與想要將文件另存為 XML 之類的人而言,相當重要。 不過,多數的 XML 程式設計人員關心的都是項目、屬性及其值。

擷取元素集合的方法

下列為 XElement 類別 (或其基礎類別) 之方法的摘要,您可以在 XElement 上呼叫這些方法來傳回項目的集合。

方法 描述
XNode.Ancestors 傳回此項目祖系之 IEnumerable<T>XElement。 多載會傳回其祖系具有指定之 IEnumerable<T>XElementXName
XContainer.Descendants 傳回此項目子代之 IEnumerable<T>XElement。 多載會傳回其子代具有指定之 IEnumerable<T>XElementXName
XContainer.Elements 傳回此項目的子項目之 IEnumerable<T>XElement。 多載會傳回其子項目具有指定之 IEnumerable<T>XElementXName
XNode.ElementsAfterSelf 傳回此項目後的項目之 IEnumerable<T>XElement。 多載會傳回具有指定之 IEnumerable<T> 的這個項目後之項目的 XElementXName
XNode.ElementsBeforeSelf 傳回此項目前的項目之 IEnumerable<T>XElement。 多載會傳回具有指定之 IEnumerable<T> 的這個項目前之項目的 XElementXName
XElement.AncestorsAndSelf 傳回此項目及其祖系之 IEnumerable<T>XElement。 多載會傳回其項目具有指定之 IEnumerable<T>XElementXName
XElement.DescendantsAndSelf 傳回此項目及其子代之 IEnumerable<T>XElement。 多載會傳回其項目具有指定之 IEnumerable<T>XElementXName

擷取單一元素的方法

下列方法會從 XElement 物件擷取單一子系。

方法 描述
XContainer.Element 傳回具有指定之 XElement 的第一個 XName 子物件。

擷取屬性集合的方法

下列方法會從 XElement 物件擷取屬性。

方法 描述
XElement.Attributes 傳回所有屬性之 IEnumerable<T>XAttribute

擷取單一屬性的方法

下列方法會從 XElement 物件擷取單一屬性。

方法 描述
XElement.Attribute 傳回具有指定之 XAttributeXName