Extensions.Elements(Of T) Method (IEnumerable(Of 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.
Assembly: System.Xml.Linq (in System.Xml.Linq.dll)
<ExtensionAttribute> Public Shared Function Elements(Of T As XContainer) ( source As IEnumerable(Of T), name As XName ) As IEnumerable(Of XElement)
Parameters
- source
-
Type:
System.Collections.Generic.IEnumerable(Of T)
An IEnumerable(Of T) of XElement that contains the source collection.
- name
-
Type:
System.Xml.Linq.XName
The XName to match.
Return Value
Type: System.Collections.Generic.IEnumerable(Of XElement)An IEnumerable(Of T) of XElement 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.
Type Parameters
- T
The type of the objects in source, constrained to XContainer.
Visual Basic users can use the integrated elements axis to retrieve the child elements of every element in a collection.
This method uses deferred execution.
This extension method is useful when you want to retrieve all elements with a specified name at a particular depth. This is easy if the document is very regular, but if the document is irregular, it can be a bit more difficult. In the following example, we want to retrieve all aaa elements that are children of Item elements. A given Item element may or may not contain an aaa element. This is easily accomplished using this extension method, as follows:
Dim xmlTree As XElement = _
<Root>
<Item>
<aaa>1</aaa>
<bbb>2</bbb>
</Item>
<Item>
<ccc>3</ccc>
<aaa>4</aaa>
</Item>
<Item>
<ddd>5</ddd>
<eee>6</eee>
</Item>
</Root>
Dim allGrandChildren = From el In xmlTree.<Item>.<aaa> _
Select el
For Each el As XElement In allGrandChildren
Console.WriteLine(el)
Next
This example produces the following output:
<aaa>1</aaa> <aaa>4</aaa>
The following is the same example, but in this case the XML is in a namespace. For more information, see Working with XML Namespaces.
Imports <xmlns="http://www.adventure-works.com">
Module Module1
Sub Main()
Dim xmlTree As XElement = _
<Root>
<Item>
<aaa>1</aaa>
<bbb>2</bbb>
</Item>
<Item>
<ccc>3</ccc>
<aaa>4</aaa>
</Item>
<Item>
<ddd>5</ddd>
<eee>6</eee>
</Item>
</Root>
Dim allGrandChildren = From el In xmlTree.<Item>.<aaa> _
Select el
For Each el As XElement In allGrandChildren
Console.WriteLine(el)
Next
End Sub
End Module
This example produces the following output:
<aaa xmlns="http://www.adventure-works.com">1</aaa> <aaa xmlns="http://www.adventure-works.com">4</aaa>
Available since 8
.NET Framework
Available since 3.5
Portable Class Library
Supported in: portable .NET platforms
Silverlight
Available since 2.0
Windows Phone Silverlight
Available since 7.0
Windows Phone
Available since 8.1