LINQ to XML axes overview
After you've created an XML tree or loaded an XML document into an XML tree, you can query it to find elements and attributes and retrieve their values. You retrieve collections through the axis methods, also called axes. Some of the axes are methods in the XElement and XDocument classes that return IEnumerable<T> collections. Some of the axes are extension methods in the Extensions class. The axes that are implemented as extension methods operate on collections and return collections.
As described in XElement class overview, an XElement object represents a single element node. The content of an element can be complex (sometimes called structured content), or it can be a simple element. A simple element can be empty or can contain a value. If the node contains structured content, you can use the various axis methods to retrieve enumerations of descendant elements. The most commonly used axis methods are Elements and Descendants.
In addition to the axis methods, which return collections, there are two more methods that you'll commonly use in LINQ to XML queries. The Element method returns a single XElement. The Attribute method returns a single XAttribute.
For many purposes, LINQ queries provide the most powerful way to examine a tree, extract data from it, and transform it. LINQ queries operate on objects that implement IEnumerable<T>, and the LINQ to XML axes return IEnumerable<T> of XElement collections, and IEnumerable<T> of XAttribute collections. You need these collections to do your queries.
In addition to the axis methods that retrieve collections of elements and attributes, there are axis methods that allow you to iterate through the tree in great detail. For example, instead of dealing with elements and attributes, you can work with the nodes of the tree. Nodes are a finer level of granularity than elements and attributes. When working with nodes, you can examine XML comments, text nodes, processing instructions, and more. This functionality is important, for example, to someone who is writing a word processor and wants to save documents as XML. However, the majority of XML programmers are primarily concerned with elements, attributes, and their values.
Methods for retrieving a collection of elements
The following is a summary of the methods of the XElement class (or its base classes) that you call on an XElement to return a collection of elements.
Method | Description |
---|---|
XNode.Ancestors | Returns an IEnumerable<T> of XElement of the ancestors of this element. An overload returns an IEnumerable<T> of XElement of the ancestors that have the specified XName. |
XContainer.Descendants | Returns an IEnumerable<T> of XElement of the descendants of this element. An overload returns an IEnumerable<T> of XElement of the descendants that have the specified XName. |
XContainer.Elements | Returns an IEnumerable<T> of XElement of the child elements of this element. An overload returns an IEnumerable<T> of XElement of the child elements that have the specified XName. |
XNode.ElementsAfterSelf | Returns an IEnumerable<T> of XElement of the elements that come after this element. An overload returns an IEnumerable<T> of XElement of the elements after this element that have the specified XName. |
XNode.ElementsBeforeSelf | Returns an IEnumerable<T> of XElement of the elements that come before this element. An overload returns an IEnumerable<T> of XElement of the elements before this element that have the specified XName. |
XElement.AncestorsAndSelf | Returns an IEnumerable<T> of XElement of this element and its ancestors. An overload returns an IEnumerable<T> of XElement of the elements that have the specified XName. |
XElement.DescendantsAndSelf | Returns an IEnumerable<T> of XElement of this element and its descendants. An overload returns an IEnumerable<T> of XElement of the elements that have the specified XName. |
Method for retrieving a single element
The following method retrieves a single child from an XElement object.
Method | Description |
---|---|
XContainer.Element | Returns the first child XElement object that has the specified XName. |
Method for retrieving a collection of attributes
The following method retrieves attributes from an XElement object.
Method | Description |
---|---|
XElement.Attributes | Returns an IEnumerable<T> of XAttribute of all of the attributes. |
Method for retrieving a single attribute
The following method retrieves a single attribute from an XElement object.
Method | Description |
---|---|
XElement.Attribute | Returns the XAttribute that has the specified XName. |