Extensions.Elements Metoda

Definicja

Zwraca kolekcję elementów podrzędnych każdego elementu i dokumentu w kolekcji źródłowej.Returns a collection of the child elements of every element and document in the source collection.

Przeciążenia

Elements<T>(IEnumerable<T>)

Zwraca kolekcję elementów podrzędnych każdego elementu i dokumentu w kolekcji źródłowej.Returns a collection of the child elements of every element and document in the source collection.

Elements<T>(IEnumerable<T>, XName)

Zwraca filtrowaną kolekcję elementów podrzędnych każdego elementu i dokumentu w kolekcji źródłowej.Returns a filtered collection of the child elements of every element and document in the source collection. Kolekcja zawiera tylko elementy, które XName mają zgodne.Only elements that have a matching XName are included in the collection.

Uwagi

Visual Basic zawiera oś scalonych elementów, która umożliwia znalezienie wszystkich elementów podrzędnych z określonym XName dla każdego elementu w kolekcji źródłowej.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.

Ta metoda używa odroczonego wykonania.This method uses deferred execution.

Elements<T>(IEnumerable<T>)

Zwraca kolekcję elementów podrzędnych każdego elementu i dokumentu w kolekcji źródłowej.Returns a collection of the child elements of every element and document in the source collection.

public:
generic <typename T>
 where T : System::Xml::Linq::XContainer[System::Runtime::CompilerServices::Extension]
 static System::Collections::Generic::IEnumerable<System::Xml::Linq::XElement ^> ^ Elements(System::Collections::Generic::IEnumerable<T> ^ source);
public static System.Collections.Generic.IEnumerable<System.Xml.Linq.XElement> Elements<T> (this System.Collections.Generic.IEnumerable<T> source) where T : System.Xml.Linq.XContainer;
static member Elements : seq<'T (requires 'T :> System.Xml.Linq.XContainer)> -> seq<System.Xml.Linq.XElement> (requires 'T :> System.Xml.Linq.XContainer)
<Extension()>
Public Function Elements(Of T As XContainer) (source As IEnumerable(Of T)) As IEnumerable(Of XElement)

Parametry typu

T

Typ obiektów w source, z XContainerograniczeniami.The type of the objects in source, constrained to XContainer.

Parametry

source
IEnumerable<T>

Z programu XElementzawierającegokolekcjęźródłową. IEnumerable<T>An IEnumerable<T> of XElement that contains the source collection.

Zwraca

IEnumerable<T> ElementówpodrzędnychkażdegoelementulubdokumentuXElement w kolekcji źródłowej.An IEnumerable<T> of XElement of the child elements of every element or document in the source collection.

Przykłady

Poniższy przykład pobiera kolekcję elementów z nazwą Childelementu.The following example retrieves a collection of elements with the element name of Child. Następnie używa tej metody osi do pobrania wszystkich elementów podrzędnych kolekcji.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);  
Dim xmlTree As XElement = _  
     <Root>  
          <Child>  
              <GrandChild1>1</GrandChild1>  
              <GrandChild2>2</GrandChild2>  
          </Child>  
  
          <Child>  
              <GrandChild3>3</GrandChild3>  
              <GrandChild4>4</GrandChild4>  
          </Child>  
  
          <Child>  
              <GrandChild5>5</GrandChild5>  
              <GrandChild6>6</GrandChild6>  
          </Child>  
      </Root>  
  
Dim allGrandChildren = From el In xmlTree.<Child>.Elements _  
                       Select el  
  
For Each el As XElement In allGrandChildren  
    Console.WriteLine(el)  
Next  
  

Ten przykład generuje następujące wyniki:This example produces the following output:

<GrandChild1>1</GrandChild1>  
<GrandChild2>2</GrandChild2>  
<GrandChild3>3</GrandChild3>  
<GrandChild4>4</GrandChild4>  
<GrandChild5>5</GrandChild5>  
<GrandChild6>6</GrandChild6>  

Poniżej znajduje się ten sam przykład, ale w tym przypadku kod XML znajduje się w przestrzeni nazw.The following is the same example, but in this case the XML is in a namespace. Aby uzyskać więcej informacji, zobacz Praca z przestrzeniami nazw XML.For more information, see Working with XML 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);  
Imports <xmlns="http://www.adventure-works.com">  
  
Module Module1  
    Sub Main()  
        Dim xmlTree As XElement = _  
             <Root>  
                 <Child>  
                     <GrandChild1>1</GrandChild1>  
                     <GrandChild2>2</GrandChild2>  
                 </Child>  
  
                 <Child>  
                     <GrandChild3>3</GrandChild3>  
                     <GrandChild4>4</GrandChild4>  
                 </Child>  
  
                 <Child>  
                     <GrandChild5>5</GrandChild5>  
                     <GrandChild6>6</GrandChild6>  
                 </Child>  
             </Root>  
  
        Dim allGrandChildren = From el In xmlTree.<Child>.Elements _  
                               Select el  
  
        For Each el As XElement In allGrandChildren  
            Console.WriteLine(el)  
        Next  
    End Sub  
End Module  
  

Ten przykład generuje następujące wyniki: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>  

Uwagi

Chociaż Visual Basic zawiera oś scalonych elementów, która umożliwia znalezienie wszystkich elementów podrzędnych z określonym XName dla każdego elementu w kolekcji źródłowej, nie ma żadnej zintegrowanej osi elementów, która umożliwia pobranie kolekcji co element podrzędny dla każdego elementu w kolekcji źródłowej.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.

Ta metoda używa odroczonego wykonania.This method uses deferred execution.

Zobacz też

Elements<T>(IEnumerable<T>, XName)

Zwraca filtrowaną kolekcję elementów podrzędnych każdego elementu i dokumentu w kolekcji źródłowej.Returns a filtered collection of the child elements of every element and document in the source collection. Kolekcja zawiera tylko elementy, które XName mają zgodne.Only elements that have a matching XName are included in the collection.

public:
generic <typename T>
 where T : System::Xml::Linq::XContainer[System::Runtime::CompilerServices::Extension]
 static System::Collections::Generic::IEnumerable<System::Xml::Linq::XElement ^> ^ Elements(System::Collections::Generic::IEnumerable<T> ^ source, System::Xml::Linq::XName ^ name);
public static System.Collections.Generic.IEnumerable<System.Xml.Linq.XElement> Elements<T> (this System.Collections.Generic.IEnumerable<T> source, System.Xml.Linq.XName name) where T : System.Xml.Linq.XContainer;
static member Elements : seq<'T (requires 'T :> System.Xml.Linq.XContainer)> * System.Xml.Linq.XName -> seq<System.Xml.Linq.XElement> (requires 'T :> System.Xml.Linq.XContainer)
<Extension()>
Public Function Elements(Of T As XContainer) (source As IEnumerable(Of T), name As XName) As IEnumerable(Of XElement)

Parametry typu

T

Typ obiektów w source, z XContainerograniczeniami.The type of the objects in source, constrained to XContainer.

Parametry

source
IEnumerable<T>

Z programu XElementzawierającegokolekcjęźródłową. IEnumerable<T>An IEnumerable<T> of XElement that contains the source collection.

name
XName

XName Do dopasowania.The XName to match.

Zwraca

IEnumerable<T> ElementówpodrzędnychkażdegoelementuidokumentuXElement w kolekcji źródłowej.An IEnumerable<T> of XElement of the child elements of every element and document in the source collection. Kolekcja zawiera tylko elementy, które XName mają zgodne.Only elements that have a matching XName are included in the collection.

Przykłady

Ta metoda rozszerzenia jest przydatna, gdy chcesz pobrać wszystkie elementy z określoną nazwą na konkretną głębokość.This extension method is useful when you want to retrieve all elements with a specified name at a particular depth. Jest to proste, jeśli dokument jest bardzo regularny, ale jeśli dokument jest nieregularny, może być nieco trudniejszy.This is easy if the document is very regular, but if the document is irregular, it can be a bit more difficult. W poniższym przykładzie chcemy pobrać wszystkie aaa elementy, które są elementami Item podrzędnymi elementów.In the following example, we want to retrieve all aaa elements that are children of Item elements. Dany Item element może lub nie może aaa zawierać elementu.A given Item element may or may not contain an aaa element. Jest to łatwo realizowane przy użyciu tej metody rozszerzania w następujący sposób:This is easily accomplished using this extension method, as follows:

XElement xmlTree = new XElement("Root",  
    new XElement("Item",  
        new XElement("aaa", 1),  
        new XElement("bbb", 2)  
    ),  
    new XElement("Item",  
        new XElement("ccc", 3),  
        new XElement("aaa", 4)  
    ),  
    new XElement("Item",  
        new XElement("ddd", 5),  
        new XElement("eee", 6)  
    )  
);  
  
IEnumerable<XElement> allGrandChildren =  
    from el in xmlTree.Elements("Item").Elements("aaa")  
    select el;  
  
foreach (XElement el in allGrandChildren)  
    Console.WriteLine(el);  
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  
  

Ten przykład generuje następujące wyniki:This example produces the following output:

<aaa>1</aaa>  
<aaa>4</aaa>  

Poniżej znajduje się ten sam przykład, ale w tym przypadku kod XML znajduje się w przestrzeni nazw.The following is the same example, but in this case the XML is in a namespace. Aby uzyskać więcej informacji, zobacz Praca z przestrzeniami nazw XML.For more information, see Working with XML Namespaces.

XNamespace aw = "http://www.adventure-works.com";  
XElement xmlTree = new XElement(aw + "Root",  
    new XElement(aw + "Item",  
        new XElement(aw + "aaa", 1),  
        new XElement(aw + "bbb", 2)  
    ),  
    new XElement(aw + "Item",  
        new XElement(aw + "ccc", 3),  
        new XElement(aw + "aaa", 4)  
    ),  
    new XElement(aw + "Item",  
        new XElement(aw + "ddd", 5),  
        new XElement(aw + "eee", 6)  
    )  
);  
  
IEnumerable<XElement> allGrandChildren =  
    from el in xmlTree.Elements(aw + "Item").Elements(aw + "aaa")  
    select el;  
  
foreach (XElement el in allGrandChildren)  
    Console.WriteLine(el);  
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  
  

Ten przykład generuje następujące wyniki:This example produces the following output:

<aaa xmlns="http://www.adventure-works.com">1</aaa>  
<aaa xmlns="http://www.adventure-works.com">4</aaa>  

Uwagi

Visual Basic użytkownicy mogą używać osi zintegrowane elementy do pobierania elementów podrzędnych każdego elementu w kolekcji.Visual Basic users can use the integrated elements axis to retrieve the child elements of every element in a collection.

Ta metoda używa odroczonego wykonania.This method uses deferred execution.

Zobacz też

Dotyczy