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 | |
---|---|---|
Ancestors<T>(IEnumerable<T>) | Returns a collection of elements that contains the ancestors of every node in the source collection. | |
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. | |
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. | |
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. | |
Attributes(IEnumerable<XElement>) | Returns a collection of the attributes of every element in the source collection. | |
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. | |
DescendantNodes<T> | Returns a collection of the descendant nodes of every document and element in the source collection. | |
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. | |
Descendants<T>(IEnumerable<T>) | Returns a collection of elements that contains the descendant elements of every element and document in the source collection. | |
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. | |
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. | |
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. | |
Elements<T>(IEnumerable<T>) | Returns a collection of the child elements of every element and document in the source collection. | |
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. | |
InDocumentOrder<T> | Returns a collection of nodes that contains all nodes in the source collection, sorted in document order. | |
Nodes<T> | Returns a collection of the child nodes of every document and element in the source collection. | |
Remove(IEnumerable<XAttribute>) | Removes every attribute in the source collection from its parent element. | |
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.
See Also