Extensions.Descendants Yöntem

Tanım

Kaynak koleksiyondaki her öğe ve belge için alt öğeleri içeren öğelerin koleksiyonunu döndürür.Returns a collection of elements that contains the descendant elements of every element and document in the source collection.

Aşırı Yüklemeler

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

Kaynak koleksiyondaki her öğe ve belge için alt öğeleri içeren öğelerin filtrelenmiş bir koleksiyonunu döndürür.Returns a filtered collection of elements that contains the descendant elements of every element and document in the source collection. Yalnızca eşleşen öğeler XName koleksiyona dahil edilir.Only elements that have a matching XName are included in the collection.

Descendants<T>(IEnumerable<T>)

Kaynak koleksiyondaki her öğe ve belge için alt öğeleri içeren öğelerin koleksiyonunu döndürür.Returns a collection of elements that contains the descendant elements of every element and document in the source collection.

Açıklamalar

Visual Basic kullanıcıları, bir koleksiyonun alt öğelerini almak için tümleşik XML alt eksenini kullanabilir.Visual Basic users can use the integrated XML descendant axis to retrieve the descendant elements of a collection. Ancak, tümleşik eksen yalnızca belirtilen bir ada sahip alt öğeleri alır.However, the integrated axis only retrieves descendants with a specified name. Visual Basic kullanıcılar tüm alt öğeleri almak istiyorlarsa, bu eksen yöntemini açıkça kullanmaları gerekir.If Visual Basic users want to retrieve all descendants, then they must use this axis method explicitly.

Bu yöntem ertelenmiş yürütmeyi kullanır.This method uses deferred execution.

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

Kaynak koleksiyondaki her öğe ve belge için alt öğeleri içeren öğelerin filtrelenmiş bir koleksiyonunu döndürür.Returns a filtered collection of elements that contains the descendant elements of every element and document in the source collection. Yalnızca eşleşen öğeler XName koleksiyona dahil edilir.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 ^> ^ 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)

Tür Parametreleri

T

Uygulamasındaki nesnelerinin türü source , ile sınırlıdır XContainer .The type of the objects in source, constrained to XContainer.

Parametreler

source
IEnumerable<T>

IEnumerable<T> XContainer Kaynak koleksiyonu içeren bir.An IEnumerable<T> of XContainer that contains the source collection.

name
XName

XNameEşleştirilecek.The XName to match.

Döndürülenler

IEnumerable<XElement>

IEnumerable<T> XElement Kaynak koleksiyondaki her öğe ve belge için alt öğeleri içerir.An IEnumerable<T> of XElement that contains the descendant elements of every element and document in the source collection. Yalnızca eşleşen öğeler XName koleksiyona dahil edilir.Only elements that have a matching XName are included in the collection.

Örnekler

Aşağıdaki örnek iki öğenin koleksiyonunu alır ve sonra belirtilen öğe adına sahip iki öğenin tüm alt öğelerinin bir koleksiyonunu alır.The following example retrieves a collection of two elements, and then retrieves a collection of all descendants of the two elements that have the specified element name.

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)  

Bu örnek aşağıdaki çıktıyı üretir:This example produces the following output:

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

Aşağıdakiler aynı örnektir, ancak bu örnekte XML bir ad alanıdır.The following is the same example, but in this case the XML is in a namespace. Daha fazla bilgi için bkz. XML ad alanları Ile çalışma.For more information, see Work with XML Namespaces.

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  

Bu örnek aşağıdaki çıktıyı üretir:This example produces the following output:

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

Açıklamalar

Visual Basic kullanıcılar bu eksen yöntemini açıkça kullanmak yerine Visual Basic (LINQ to XML) dilinde tümleşik eksenleri kullanabilir.Visual Basic users can use the Language-Integrated Axes in Visual Basic (LINQ to XML) instead of using this axis method explicitly.

Bu yöntem ertelenmiş yürütmeyi kullanır.This method uses deferred execution.

Ayrıca bkz.

Şunlara uygulanır

Descendants<T>(IEnumerable<T>)

Kaynak koleksiyondaki her öğe ve belge için alt öğeleri içeren öğelerin koleksiyonunu döndürür.Returns a collection of elements that contains the descendant 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 ^> ^ 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)

Tür Parametreleri

T

Uygulamasındaki nesnelerinin türü source , ile sınırlıdır XContainer .The type of the objects in source, constrained to XContainer.

Parametreler

source
IEnumerable<T>

IEnumerable<T> XContainer Kaynak koleksiyonu içeren bir.An IEnumerable<T> of XContainer that contains the source collection.

Döndürülenler

IEnumerable<XElement>

IEnumerable<T> XElement Kaynak koleksiyondaki her öğe ve belge için alt öğeleri içerir.An IEnumerable<T> of XElement that contains the descendant elements of every element and document in the source collection.

Örnekler

Aşağıdaki örnek bir öğe koleksiyonu alır ve sonra bu eksen yöntemini öğe koleksiyonundaki her öğenin tüm alt öğelerini almak için kullanır.The following example retrieves a collection of elements, and then uses this axis method to retrieve all descendent elements of every item in the collection of elements.

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  

Bu örnek aşağıdaki çıktıyı üretir:This example produces the following output:

<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>  

Aşağıdakiler aynı örnektir, ancak bu örnekte XML bir ad alanıdır.The following is the same example, but in this case the XML is in a namespace. Daha fazla bilgi için bkz. XML ad alanları Ile çalışma.For more information, see Work with XML Namespaces.

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  

Bu örnek aşağıdaki çıktıyı üretir:This example produces the following output:

<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>  

Açıklamalar

Visual Basic kullanıcıları, bir koleksiyonun alt öğelerini almak için tümleşik XML alt eksenini kullanabilir.Visual Basic users can use the integrated XML descendant axis to retrieve the descendant elements of a collection. Ancak, tümleşik eksen yalnızca belirtilen bir ada sahip alt öğeleri alır.However, the integrated axis only retrieves descendants with a specified name. Visual Basic kullanıcılar tüm alt öğeleri almak istiyorlarsa, bu eksen yöntemini açıkça kullanmaları gerekir.If Visual Basic users want to retrieve all descendants, then they must use this axis method explicitly.

Bu yöntem ertelenmiş yürütmeyi kullanır.This method uses deferred execution.

Ayrıca bkz.

Şunlara uygulanır