Extensions.Elements<T> Method (IEnumerable<T>)
Returns a collection of the child elements of every element and document in the source collection.
Assembly: System.Xml.Linq (in System.Xml.Linq.dll)
public static IEnumerable<XElement> Elements<T>( this IEnumerable<T> source ) where T : XContainer
Type Parameters
- T
The type of the objects in source, constrained to XContainer.
Parameters
- source
- Type: System.Collections.Generic.IEnumerable<T>
An IEnumerable<T> of XElement that contains the source collection.
Return Value
Type: System.Collections.Generic.IEnumerable<XElement>An IEnumerable<T> of XElement of the child elements of every element or document in the source collection.
Usage Note
In Visual Basic and C#, you can call this method as an instance method on any object of type IEnumerable<T>. When you use instance method syntax to call this method, omit the first parameter. For more information, see Extension Methods (Visual Basic) or Extension Methods (C# Programming Guide).Although Visual Basic contains an integrated elements axis that allows you to find all child elements with a specified XName for every element in the source collection, there is no integrated elements axis that allows you to retrieve a collection of every child element for every element in the source collection.
This method uses deferred execution.
The following example retrieves a collection of elements with the element name of Child. It then uses this axis method to retrieve all child elements of the collection.
XElement xmlTree = new XElement("Root", new XElement("Child", new XElement("GrandChild1", 1), new XElement("GrandChild2", 2) ), new XElement("Child", new XElement("GrandChild3", 3), new XElement("GrandChild4", 4) ), new XElement("Child", new XElement("GrandChild5", 5), new XElement("GrandChild6", 6) ) ); IEnumerable<XElement> allGrandChildren = from el in xmlTree.Elements("Child").Elements() select el; foreach (XElement el in allGrandChildren) Console.WriteLine(el);
This example produces the following output:
<GrandChild1>1</GrandChild1> <GrandChild2>2</GrandChild2> <GrandChild3>3</GrandChild3> <GrandChild4>4</GrandChild4> <GrandChild5>5</GrandChild5> <GrandChild6>6</GrandChild6>
The following is the same example, but in this case the XML is in a namespace. For more information, see Working With Namespaces.
XNamespace aw = "http://www.adventure-works.com"; XElement xmlTree = new XElement(aw + "Root", new XElement(aw + "Child", new XElement(aw + "GrandChild1", 1), new XElement(aw + "GrandChild2", 2) ), new XElement(aw + "Child", new XElement(aw + "GrandChild3", 3), new XElement(aw + "GrandChild4", 4) ), new XElement(aw + "Child", new XElement(aw + "GrandChild5", 5), new XElement(aw + "GrandChild6", 6) ) ); IEnumerable<XElement> allGrandChildren = from el in xmlTree.Elements(aw + "Child").Elements() select el; foreach (XElement el in allGrandChildren) Console.WriteLine(el);
This example produces the following output:
<GrandChild1 xmlns="http://www.adventure-works.com">1</GrandChild1> <GrandChild2 xmlns="http://www.adventure-works.com">2</GrandChild2> <GrandChild3 xmlns="http://www.adventure-works.com">3</GrandChild3> <GrandChild4 xmlns="http://www.adventure-works.com">4</GrandChild4> <GrandChild5 xmlns="http://www.adventure-works.com">5</GrandChild5> <GrandChild6 xmlns="http://www.adventure-works.com">6</GrandChild6>
Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)
The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.