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.
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
Тип объектов в source
, ограниченный узлом XContainer.
Параметры
- source
- IEnumerable<T>
Интерфейс IEnumerable<T> узла XContainer, содержащий исходную коллекцию.
Возвращаемое значение
IEnumerable<T> для XElement, содержащий подчиненные элементы каждого элемента и документа в исходной коллекции. В коллекцию включаются только элементы, соответствующие XName.
Примеры
В следующем примере извлекается коллекция из двух элементов, а затем возвращается коллекция всех потомков двух элементов с указанным именем элемента.
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)
В этом примере выводятся следующие данные:
This is some text where all of the text nodes must be concatenated. This is a second sentence.
Ниже приведен тот же пример, но в этом случае XML находится в пространстве имен . Дополнительные сведения см. в разделе Работа с пространствами имен 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
В этом примере выводятся следующие данные:
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) вместо явного использования этого метода оси.
Этот метод использует отложенное выполнение.
См. также раздел
- DescendantNodesAndSelf()
- DescendantsAndSelf()
- DescendantNodes()
- Descendants()
- DescendantNodes<T>(IEnumerable<T>)
- DescendantsAndSelf
- Nodes<T>(IEnumerable<T>)
- Общие сведения о LINQ to XML
Применяется к
Descendants<T>(IEnumerable<T>)
- Исходный код:
- Extensions.cs
- Исходный код:
- Extensions.cs
- Исходный код:
- Extensions.cs
Возвращает коллекцию элементов, содержащую подчиненные элементы каждого элемента и документа в исходной коллекции.
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
Тип объектов в source
, ограниченный узлом XContainer.
Параметры
- source
- IEnumerable<T>
Интерфейс IEnumerable<T> узла XContainer, содержащий исходную коллекцию.
Возвращаемое значение
IEnumerable<T> для XElement, содержащий подчиненные элементы каждого элемента и документа в исходной коллекции.
Примеры
В следующем примере извлекается коллекция элементов, а затем используется этот метод оси для получения всех элементов-потомков каждого элемента в коллекции элементов.
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
В этом примере выводятся следующие данные:
<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.
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
В этом примере выводятся следующие данные:
<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 хотят получить всех потомков, они должны явно использовать этот метод оси.
Этот метод использует отложенное выполнение.
См. также раздел
- DescendantNodesAndSelf()
- DescendantsAndSelf()
- DescendantNodes()
- Descendants()
- DescendantNodes<T>(IEnumerable<T>)
- DescendantsAndSelf
- Nodes<T>(IEnumerable<T>)
- Общие сведения о LINQ to XML