建立 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 軸則會傳回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>XElement,這些專案具有指定的XName。 |
| 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 | 傳回具有指定的 XAttribute 的 XName。 |