LINQ to XML 軸概觀
建立 XML 樹狀結構,或將 XML 文件載入 XML 樹狀結構後,您可以進行查詢以尋找元素與屬性,並擷取其值。 您可以透過「座標軸方法」擷取集合,也稱為「座標軸」。 有些座標軸是 XElement 和 XDocument 類別中,傳回 IEnumerable<T> 集合的方法。 有些座標軸是 Extensions 類別中的擴充方法。 作為擴充方法實作的座標軸會在集合上運算,然後傳回集合。
如 XElement 類別概觀中所述,XElement 物件代表單一元素節點。 項目的內容可能很複雜 (有時候稱為結構化的內容),或者,它可能是簡單的項目。 簡單的項目可以是空的,也可以包含值。 如果節點包含結構化的內容,您可以使用各種座標軸方法來擷取子代項目的列舉。 最常使用的座標軸方法為 Elements 和 Descendants。
除了會傳回集合的座標軸方法之外,還有其他兩個常用於 LINQ to XML 查詢的方法。 Element 方法會傳回單一的 XElement。 Attribute 方法會傳回單一的 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> 的 XElement 之 XName。 |
XContainer.Descendants | 傳回此項目子代之 IEnumerable<T> 的 XElement。 多載會傳回其子代具有指定之 IEnumerable<T> 的 XElement 之 XName。 |
XContainer.Elements | 傳回此項目的子項目之 IEnumerable<T> 的 XElement。 多載會傳回其子項目具有指定之 IEnumerable<T> 的 XElement 之 XName。 |
XNode.ElementsAfterSelf | 傳回此項目後的項目之 IEnumerable<T> 的 XElement。 多載會傳回具有指定之 IEnumerable<T> 的這個項目後之項目的 XElement 之 XName。 |
XNode.ElementsBeforeSelf | 傳回此項目前的項目之 IEnumerable<T> 的 XElement。 多載會傳回具有指定之 IEnumerable<T> 的這個項目前之項目的 XElement 之 XName。 |
XElement.AncestorsAndSelf | 傳回此項目及其祖系之 IEnumerable<T> 的 XElement。 多載會傳回其項目具有指定之 IEnumerable<T> 的 XElement 之 XName。 |
XElement.DescendantsAndSelf | 傳回此項目及其子代之 IEnumerable<T> 的 XElement。 多載會傳回其項目具有指定之 IEnumerable<T> 的 XElement 之 XName。 |
擷取單一元素的方法
下列方法會從 XElement 物件擷取單一子系。
方法 | 描述 |
---|---|
XContainer.Element | 傳回具有指定之 XElement 的第一個 XName 子物件。 |
擷取屬性集合的方法
下列方法會從 XElement 物件擷取屬性。
方法 | 描述 |
---|---|
XElement.Attributes | 傳回所有屬性之 IEnumerable<T> 的 XAttribute。 |
擷取單一屬性的方法
下列方法會從 XElement 物件擷取單一屬性。
方法 | 描述 |
---|---|
XElement.Attribute | 傳回具有指定之 XAttribute 的 XName。 |