Condividi tramite


Extensions.Descendants Metodo

Definizione

Restituisce una raccolta di elementi che contiene gli elementi discendenti di ciascun elemento e documento nella raccolta di origine.

Overload

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

Restituisce una raccolta filtrata di elementi che contiene gli elementi discendenti di ciascun elemento e documento nella raccolta di origine. Solo gli elementi che hanno un oggetto XName corrispondente vengono inclusi nella raccolta.

Descendants<T>(IEnumerable<T>)

Restituisce una raccolta di elementi che contiene gli elementi discendenti di ciascun elemento e documento nella raccolta di origine.

Commenti

Visual Basic gli utenti possono utilizzare l'asse discendente XML integrato per recuperare gli elementi discendenti di una raccolta. Tuttavia, l'asse integrato recupera solo discendenti con un nome specificato. Se Visual Basic gli utenti vogliono recuperare tutti i discendenti, è necessario usare questo metodo dell'asse in modo esplicito.

Questo metodo usa l'esecuzione posticipata.

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

Restituisce una raccolta filtrata di elementi che contiene gli elementi discendenti di ciascun elemento e documento nella raccolta di origine. Solo gli elementi che hanno un oggetto XName corrispondente vengono inclusi nella raccolta.

public:
generic <typename T>
 where T : System::Xml::Linq::XContainer[System::Runtime::CompilerServices::Extension]
 static System::Collections::Generic::IEnumerable<System::Xml::Linq::XElement ^> ^ Descendants(System::Collections::Generic::IEnumerable<T> ^ source, System::Xml::Linq::XName ^ name);
public static System.Collections.Generic.IEnumerable<System.Xml.Linq.XElement> Descendants<T> (this System.Collections.Generic.IEnumerable<T> source, System.Xml.Linq.XName name) where T : System.Xml.Linq.XContainer;
public static System.Collections.Generic.IEnumerable<System.Xml.Linq.XElement> Descendants<T> (this System.Collections.Generic.IEnumerable<T?> source, System.Xml.Linq.XName? name) where T : System.Xml.Linq.XContainer;
static member Descendants : 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 Descendants(Of T As XContainer) (source As IEnumerable(Of T), name As XName) As IEnumerable(Of XElement)

Parametri di tipo

T

Tipo di oggetti in source vincolati a XContainer.

Parametri

source
IEnumerable<T>

IEnumerable<T> di XContainer che contiene la raccolta di origine.

name
XName

Oggetto XName di cui trovare la corrispondenza.

Restituisce

IEnumerable<XElement>

IEnumerable<T> di XElement che contiene gli elementi discendenti di ciascun elemento e documento nella raccolta di origine. Solo gli elementi che hanno un oggetto XName corrispondente vengono inclusi nella raccolta.

Esempio

Nell'esempio seguente viene recuperata una raccolta di due elementi e quindi viene recuperata una raccolta di tutti i discendenti dei due elementi con il nome dell'elemento specificato.

XElement xmlTree = XElement.Parse(  
@"<Root>  
    <Para>  
        <t>This is some text </t>  
        <b>  
            <t>where</t>  
        </b>  
        <t> all of the text nodes must be concatenated. </t>  
    </Para>  
    <Para>  
        <t>This is a second sentence.</t>  
    </Para>  
</Root>");  

string str =  
    (from el in xmlTree.Elements("Para").Descendants("t")  
    select (string)el)  
    .Aggregate(new StringBuilder(),  
        (sb, i) => sb.Append(i),  
        sb => sb.ToString());  

Console.WriteLine(str);  
Dim xmlTree As XElement = _  
    <Root>  
        <Para>  
            <t>This is some text </t>  
            <b>  
                <t>where</t>  
            </b>  
            <t> all of the text nodes must be concatenated. </t>  
        </Para>  
        <Para>  
            <t>This is a second sentence.</t>  
        </Para>  
    </Root>  

Dim str As String = _  
    ( _  
        From el In xmlTree.<Para>...<t> _  
        Select CStr(el) _  
    ) _  
    .Aggregate(New StringBuilder(), _  
               Function(ByVal sb, ByVal i) sb.Append(i), _  
               Function(ByVal sb) sb.ToString())  

Console.WriteLine(str)  

Nell'esempio viene prodotto l'output seguente:

This is some text where all of the text nodes must be concatenated. This is a second sentence.  

Di seguito è riportato lo stesso esempio, ma in questo caso il codice XML si trova in uno spazio dei nomi . Per altre informazioni, vedere Usare spazi dei nomi XML.

XNamespace aw = "http://www.adventure-works.com";  
XElement xmlTree = XElement.Parse(  
@"<Root xmlns='http://www.adventure-works.com'>  
    <Para>  
        <t>This is some text </t>  
        <b>  
            <t>where</t>  
        </b>  
        <t> all of the text nodes must be concatenated. </t>  
    </Para>  
    <Para>  
        <t>This is a second sentence.</t>  
    </Para>  
</Root>");  

string str =  
    (from el in xmlTree.Elements(aw + "Para").Descendants(aw + "t")  
     select (string)el)  
    .Aggregate(new StringBuilder(),  
        (sb, i) => sb.Append(i),  
        sb => sb.ToString());  

Console.WriteLine(str);  
Imports <xmlns="http://www.adventure-works.com">  

Module Module1  
    Sub Main()  
        Dim xmlTree As XElement = _  
            <Root>  
                <Para>  
                    <t>This is some text </t>  
                    <b>  
                        <t>where</t>  
                    </b>  
                    <t> all of the text nodes must be concatenated. </t>  
                </Para>  
                <Para>  
                    <t>This is a second sentence.</t>  
                </Para>  
            </Root>  

        Dim str As String = _  
            ( _  
                From el In xmlTree.<Para>...<t> _  
                Select CStr(el) _  
            ) _  
            .Aggregate(New StringBuilder(), _  
                       Function(sb, i) sb.Append(i), _  
                       Function(sb) sb.ToString())  

        Console.WriteLine(str)  
    End Sub  
End Module  

Nell'esempio viene prodotto l'output seguente:

This is some text where all of the text nodes must be concatenated. This is a second sentence.  

Commenti

Visual Basic gli utenti possono usare gli assi integrati nel linguaggio in Visual Basic (LINQ to XML) anziché usare in modo esplicito questo metodo dell'asse.

Questo metodo usa l'esecuzione posticipata.

Vedi anche

Si applica a

Descendants<T>(IEnumerable<T>)

Restituisce una raccolta di elementi che contiene gli elementi discendenti di ciascun elemento e documento nella raccolta di origine.

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

Parametri di tipo

T

Tipo di oggetti in source vincolati a XContainer.

Parametri

source
IEnumerable<T>

IEnumerable<T> di XContainer che contiene la raccolta di origine.

Restituisce

IEnumerable<XElement>

IEnumerable<T> di XElement che contiene gli elementi discendenti di ciascun elemento e documento nella raccolta di origine.

Esempio

Nell'esempio seguente viene recuperata una raccolta di elementi e quindi viene utilizzato questo metodo dell'asse per recuperare tutti gli elementi discendenti di ogni elemento nella raccolta di elementi.

XElement xmlTree = XElement.Parse(  
@"<Root>  
    <Para>  
        <t>This is some text </t>  
        <b>  
            <t>where</t>  
        </b>  
        <t> all of the nodes must be concatenated. </t>  
    </Para>  
    <Para>  
        <t>This is a second sentence.</t>  
    </Para>  
</Root>");  

IEnumerable<XElement> elList =  
    from el in xmlTree.Elements("Para").Descendants()  
    select el;  

foreach (XElement el in elList)  
    Console.WriteLine(el);  
Dim xmlTree As XElement = _  
    <Root>  
        <Para>  
            <t>This is some text </t>  
            <b>  
                <t>where</t>  
            </b>  
            <t> all of the nodes must be concatenated. </t>  
        </Para>  

        <Para>  
            <t>This is a second sentence.</t>  
        </Para>  
    </Root>  

Dim elList = From el In xmlTree.<Para>.Descendants _  
                        Select el  

For Each el As XElement In elList  
    Console.WriteLine(el)  
Next  

Nell'esempio viene prodotto l'output seguente:

<t>This is some text </t>  
<b>  
  <t>where</t>  
</b>  
<t>where</t>  
<t> all of the nodes must be concatenated. </t>  
<t>This is a second sentence.</t>  

Di seguito è riportato lo stesso esempio, ma in questo caso il codice XML si trova in uno spazio dei nomi . Per altre informazioni, vedere Usare spazi dei nomi XML.

XNamespace aw = "http://www.adventure-works.com";  
XElement xmlTree = XElement.Parse(  
@"<Root xmlns='http://www.adventure-works.com'>  
    <Para>  
        <t>This is some text </t>  
        <b>  
            <t>where</t>  
        </b>  
        <t> all of the nodes must be concatenated. </t>  
    </Para>  
    <Para>  
        <t>This is a second sentence.</t>  
    </Para>  
</Root>");  

IEnumerable<XElement> elList =  
    from el in xmlTree.Elements(aw + "Para").Descendants()  
    select el;  

foreach (XElement el in elList)  
    Console.WriteLine(el);  
Imports <xmlns="http://www.adventure-works.com">  

Module Module1  
    Sub Main()  
        Dim xmlTree As XElement = _  
            <Root>  
                <Para>  
                    <t>This is some text </t>  
                    <b>  
                        <t>where</t>  
                    </b>  
                    <t> all of the nodes must be concatenated. </t>  
                </Para>  

                <Para>  
                    <t>This is a second sentence.</t>  
                </Para>  
            </Root>  

        Dim elList = From el In xmlTree.<Para>.Descendants _  
                                Select el  

        For Each el As XElement In elList  
            Console.WriteLine(el)  
        Next  
    End Sub  
End Module  

Nell'esempio viene prodotto l'output seguente:

<t xmlns="http://www.adventure-works.com">This is some text </t>  
<b xmlns="http://www.adventure-works.com">  
  <t>where</t>  
</b>  
<t xmlns="http://www.adventure-works.com">where</t>  
<t xmlns="http://www.adventure-works.com"> all of the nodes must be concatenated. </t>  
<t xmlns="http://www.adventure-works.com">This is a second sentence.</t>  

Commenti

Visual Basic gli utenti possono utilizzare l'asse discendente XML integrato per recuperare gli elementi discendenti di una raccolta. Tuttavia, l'asse integrato recupera solo discendenti con un nome specificato. Se Visual Basic gli utenti vogliono recuperare tutti i discendenti, è necessario usare questo metodo dell'asse in modo esplicito.

Questo metodo usa l'esecuzione posticipata.

Vedi anche

Si applica a