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.

Namespace:   System.Xml.Linq
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>

Universal Windows Platform
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
Return to top
Show: