Extensions.Descendants Metodo

Definizione

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

Overload

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

Restituisce una raccolta filtrata di elementi che contiene gli elementi discendenti di ogni elemento e documento nella raccolta di origine. Nella raccolta sono inclusi solo gli elementi con un XName corrispondente.

Descendants<T>(IEnumerable<T>)

Restituisce una raccolta di elementi che contiene gli elementi discendenti di ogni 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 i 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)

Origine:
Extensions.cs
Origine:
Extensions.cs
Origine:
Extensions.cs
Origine:
Extensions.cs
Origine:
Extensions.cs

Restituisce una raccolta filtrata di elementi che contiene gli elementi discendenti di ogni elemento e documento nella raccolta di origine. Nella raccolta sono inclusi solo gli elementi con un XName corrispondente.

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, vincolato a XContainer.

Parametri

source
IEnumerable<T>

Oggetto IEnumerable<T> di XContainer contenente la raccolta di origine.

name
XName

Oggetto XName da trovare.

Valori restituiti

Oggetto IEnumerable<T> di XElement che contiene gli elementi discendenti di ogni elemento e documento nella raccolta di origine. Nella raccolta sono inclusi solo gli elementi con un XName corrispondente.

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)

In questo esempio viene generato 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

In questo esempio viene generato 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 Language-Integrated 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>)

Origine:
Extensions.cs
Origine:
Extensions.cs
Origine:
Extensions.cs
Origine:
Extensions.cs
Origine:
Extensions.cs

Restituisce una raccolta di elementi che contiene gli elementi discendenti di ogni 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, vincolato a XContainer.

Parametri

source
IEnumerable<T>

Oggetto IEnumerable<T> di XContainer contenente la raccolta di origine.

Valori restituiti

Oggetto IEnumerable<T> di XElement che contiene gli elementi discendenti di ogni 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

In questo esempio viene generato 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

In questo esempio viene generato 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 i 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