Прочитать на английском

Поделиться через


Extensions.Descendants Метод

Определение

Возвращает коллекцию элементов, содержащую подчиненные элементы каждого элемента и документа в исходной коллекции.

Перегрузки

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

Возвращает отфильтрованную коллекцию элементов, содержащую подчиненные элементы каждого элемента и документа в исходной коллекции. В коллекцию включаются только элементы, соответствующие XName.

Descendants<T>(IEnumerable<T>)

Возвращает коллекцию элементов, содержащую подчиненные элементы каждого элемента и документа в исходной коллекции.

Комментарии

Пользователи Visual Basic могут использовать интегрированную ось потомков XML для получения элементов-потомков коллекции. Однако интегрированная ось получает только потомков с указанным именем. Если пользователи Visual Basic хотят получить всех потомков, они должны явно использовать этот метод оси.

Этот метод использует отложенное выполнение.

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

Исходный код:
Extensions.cs
Исходный код:
Extensions.cs
Исходный код:
Extensions.cs

Возвращает отфильтрованную коллекцию элементов, содержащую подчиненные элементы каждого элемента и документа в исходной коллекции. В коллекцию включаются только элементы, соответствующие XName.

C#
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;
C#
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;

Параметры типа

T

Тип объектов в source, ограниченный узлом XContainer.

Параметры

source
IEnumerable<T>

Интерфейс IEnumerable<T> узла XContainer, содержащий исходную коллекцию.

name
XName

Выражение XName для сопоставления.

Возвращаемое значение

IEnumerable<T> для XElement, содержащий подчиненные элементы каждого элемента и документа в исходной коллекции. В коллекцию включаются только элементы, соответствующие XName.

Примеры

В следующем примере извлекается коллекция из двух элементов, а затем возвращается коллекция всех потомков двух элементов с указанным именем элемента.

C#
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);  

В этом примере выводятся следующие данные:

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

Ниже приведен тот же пример, но в этом случае XML находится в пространстве имен . Дополнительные сведения см. в разделе Работа с пространствами имен XML.

C#
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);  

В этом примере выводятся следующие данные:

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

Комментарии

Пользователи Visual Basic могут использовать интегрированные с языком оси в Visual Basic (LINQ to XML) вместо явного использования этого метода оси.

Этот метод использует отложенное выполнение.

См. также раздел

Применяется к

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

Descendants<T>(IEnumerable<T>)

Исходный код:
Extensions.cs
Исходный код:
Extensions.cs
Исходный код:
Extensions.cs

Возвращает коллекцию элементов, содержащую подчиненные элементы каждого элемента и документа в исходной коллекции.

C#
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;
C#
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;

Параметры типа

T

Тип объектов в source, ограниченный узлом XContainer.

Параметры

source
IEnumerable<T>

Интерфейс IEnumerable<T> узла XContainer, содержащий исходную коллекцию.

Возвращаемое значение

IEnumerable<T> для XElement, содержащий подчиненные элементы каждого элемента и документа в исходной коллекции.

Примеры

В следующем примере извлекается коллекция элементов, а затем используется этот метод оси для получения всех элементов-потомков каждого элемента в коллекции элементов.

C#
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);  

В этом примере выводятся следующие данные:

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

Ниже приведен тот же пример, но в этом случае XML находится в пространстве имен . Дополнительные сведения см. в разделе Работа с пространствами имен XML.

C#
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);  

В этом примере выводятся следующие данные:

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

Комментарии

Пользователи Visual Basic могут использовать интегрированную ось потомков XML для получения элементов-потомков коллекции. Однако интегрированная ось получает только потомков с указанным именем. Если пользователи Visual Basic хотят получить всех потомков, они должны явно использовать этот метод оси.

Этот метод использует отложенное выполнение.

См. также раздел

Применяется к

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0