Extensions Class

Microsoft Silverlight will reach end of support after October 2021. Learn more.

Contains the LINQ to XML extension methods.

Inheritance Hierarchy

System.Object
  System.Xml.Linq.Extensions

Namespace:  System.Xml.Linq
Assembly:  System.Xml.Linq (in System.Xml.Linq.dll)

Syntax

'Declaration
<ExtensionAttribute> _
Public NotInheritable Class Extensions
public static class Extensions

The Extensions type exposes the following members.

Methods

  Name Description
Public methodStatic memberSupported by Silverlight for Windows PhoneSupported by Xbox 360 Ancestors<T>(IEnumerable<T>) Returns a collection of elements that contains the ancestors of every node in the source collection.
Public methodStatic memberSupported by Silverlight for Windows PhoneSupported by Xbox 360 Ancestors<T>(IEnumerable<T>, XName) Returns a filtered collection of elements that contains the ancestors of every node in the source collection. Only elements that have a matching XName are included in the collection.
Public methodStatic memberSupported by Silverlight for Windows PhoneSupported by Xbox 360 AncestorsAndSelf(IEnumerable<XElement>) Returns a collection of elements that contains every element in the source collection, and the ancestors of every element in the source collection.
Public methodStatic memberSupported by Silverlight for Windows PhoneSupported by Xbox 360 AncestorsAndSelf(IEnumerable<XElement>, XName) Returns a filtered collection of elements that contains every element in the source collection, and the ancestors of every element in the source collection. Only elements that have a matching XName are included in the collection.
Public methodStatic memberSupported by Silverlight for Windows PhoneSupported by Xbox 360 Attributes(IEnumerable<XElement>) Returns a collection of the attributes of every element in the source collection.
Public methodStatic memberSupported by Silverlight for Windows PhoneSupported by Xbox 360 Attributes(IEnumerable<XElement>, XName) Returns a filtered collection of the attributes of every element in the source collection. Only elements that have a matching XName are included in the collection.
Public methodStatic memberSupported by Silverlight for Windows PhoneSupported by Xbox 360 DescendantNodes<T> Returns a collection of the descendant nodes of every document and element in the source collection.
Public methodStatic memberSupported by Silverlight for Windows PhoneSupported by Xbox 360 DescendantNodesAndSelf Returns a collection of nodes that contains every element in the source collection, and the descendant nodes of every element in the source collection.
Public methodStatic memberSupported by Silverlight for Windows PhoneSupported by Xbox 360 Descendants<T>(IEnumerable<T>) Returns a collection of elements that contains the descendant elements of every element and document in the source collection.
Public methodStatic memberSupported by Silverlight for Windows PhoneSupported by Xbox 360 Descendants<T>(IEnumerable<T>, XName) Returns a filtered collection of elements that contains the descendant elements of every element and document in the source collection. Only elements that have a matching XName are included in the collection.
Public methodStatic memberSupported by Silverlight for Windows PhoneSupported by Xbox 360 DescendantsAndSelf(IEnumerable<XElement>) Returns a collection of elements that contains every element in the source collection, and the descendent elements of every element in the source collection.
Public methodStatic memberSupported by Silverlight for Windows PhoneSupported by Xbox 360 DescendantsAndSelf(IEnumerable<XElement>, XName) Returns a filtered collection of elements that contains every element in the source collection, and the descendents of every element in the source collection. Only elements that have a matching XName are included in the collection.
Public methodStatic memberSupported by Silverlight for Windows PhoneSupported by Xbox 360 Elements<T>(IEnumerable<T>) Returns a collection of the child elements of every element and document in the source collection.
Public methodStatic memberSupported by Silverlight for Windows PhoneSupported by Xbox 360 Elements<T>(IEnumerable<T>, XName) Returns a filtered collection of the child elements of every element and document in the source collection. Only elements that have a matching XName are included in the collection.
Public methodStatic memberSupported by Silverlight for Windows PhoneSupported by Xbox 360 InDocumentOrder<T> Returns a collection of nodes that contains all nodes in the source collection, sorted in document order.
Public methodStatic memberSupported by Silverlight for Windows PhoneSupported by Xbox 360 Nodes<T> Returns a collection of the child nodes of every document and element in the source collection.
Public methodStatic memberSupported by Silverlight for Windows PhoneSupported by Xbox 360 Remove(IEnumerable<XAttribute>) Removes every attribute in the source collection from its parent element.
Public methodStatic memberSupported by Silverlight for Windows PhoneSupported by Xbox 360 Remove<T>(IEnumerable<T>) Removes every node in the source collection from its parent node.

Top

Remarks

Most of the LINQ to XML extension methods are axis methods that are used in LINQ queries. The methods in this class operate on collections and return collections. These methods enumerate the source collection, call the appropriate axis method on each item in the collection, and concatenate the results.

The two Remove extension methods are not axis methods, however. These methods remove attributes or nodes from the XML tree.

Note that there is another category of axis methods, implemented in the XElement, XDocument, and XNode classes. These other axis methods operate on a single object, and return a collection of XElement, XAttribute, or XNode objects.

All of the axis extension methods use deferred execution.

Examples

Dim output As New StringBuilder
Dim xmlTree As XElement = _
    <Root>
        <Child1>
            <GrandChild1>
                <GreatGrandChild1>content</GreatGrandChild1>
            </GrandChild1>
        </Child1>
        <Child2>
            <GrandChild2>
                <GreatGrandChild2>content</GreatGrandChild2>
            </GrandChild2>
        </Child2>
    </Root>

Dim greatGrandChildren = From el In xmlTree.Descendants _
                         Where el.Name.LocalName.StartsWith("Great") _
                         Select el

output.Append("Great Grand Children Elements")
output.Append(Environment.NewLine)
output.Append("----")
output.Append(Environment.NewLine)

For Each de As XElement In greatGrandChildren
    output.Append(de.Name)
    output.Append(Environment.NewLine)
Next

Dim allAncestors = From el In greatGrandChildren.Ancestors.Distinct _
                   Select el

output.Append("")
output.Append(Environment.NewLine)

output.Append("Ancestors")
output.Append(Environment.NewLine)
output.Append("----")
output.Append(Environment.NewLine)

For Each de As XElement In allAncestors
    output.Append(de.Name)
    output.Append(Environment.NewLine)
Next

OutputTextBlock.Text = output.ToString()
StringBuilder output = new StringBuilder();
XElement xmlTree = new XElement("Root",
    new XElement("Child1",
        new XElement("GrandChild1",
            new XElement("GreatGrandChild1", "content")
        )
    ),
    new XElement("Child2",
        new XElement("GrandChild2",
            new XElement("GreatGrandChild2", "content")
        )
    )
);
IEnumerable<XElement> greatGrandChildren =
    from el in xmlTree.Descendants()
    where el.Name.LocalName.StartsWith("Great")
    select el;

output.Append("Great Grand Children Elements" + Environment.NewLine);
output.Append("----" + Environment.NewLine);
foreach (XElement de in greatGrandChildren)
    output.Append(de.Name + Environment.NewLine);

IEnumerable<XElement> allAncestors =
    from el in greatGrandChildren.Ancestors().Distinct()
    select el;

output.Append("" + Environment.NewLine);
output.Append("Ancestors" + Environment.NewLine);
output.Append("----" + Environment.NewLine);
foreach (XElement de in allAncestors)
    output.Append(de.Name + Environment.NewLine);

OutputTextBlock.Text = output.ToString();

Version Information

Silverlight

Supported in: 5, 4, 3

Silverlight for Windows Phone

Supported in: Windows Phone OS 7.1, Windows Phone OS 7.0

XNA Framework

Supported in: Xbox 360, Windows Phone OS 7.0

Platforms

For a list of the operating systems and browsers that are supported by Silverlight, see Supported Operating Systems and Browsers.

Thread Safety

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.