LINQ to XML 軸概觀

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

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

除了會傳回集合的座標軸方法之外,還有兩種方法,您通常會在 LINQ to XML 查詢中使用這些方法。 Element 方法會傳回單一的 XElementAttribute 方法會傳回單一的 XAttribute

基於許多用途,LINQ 查詢提供最強大的方式來檢查樹狀結構、從中解壓縮資料,以及轉換它。 LINQ 查詢會在執行的物件上運作 IEnumerable<T> ,而且會傳回集合的 LINQ to XML 軸和集合的集合 IEnumerable<T> XElement IEnumerable<T> XAttribute 。 您需要這些集合來進行查詢。

除了擷取項目和屬性之集合的座標軸方法之外,還有其他座標軸方法可讓您仔細逐一查看樹狀結構。 例如,您可以使用樹狀結構的節點,而不是處理項目和屬性。 這些節點是比項目和屬性還要細微的位移單位等級。 使用節點時,您可以檢查 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