Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
A veces, desea encontrar todos los descendientes con un nombre determinado.Podría escribir código para procesar una iteración en todos los descendientes, pero es más fácil usar el eje Descendants.
Ejemplo
El ejemplo siguiente muestra cómo encontrar descendientes según el nombre de elemento.
XElement root = XElement.Parse(@"<root>
<para>
<r>
<t>Some text </t>
</r>
<n>
<r>
<t>that is broken up into </t>
</r>
</n>
<n>
<r>
<t>multiple segments.</t>
</r>
</n>
</para>
</root>");
IEnumerable<string> textSegs =
from seg in root.Descendants("t")
select (string)seg;
string str = textSegs.Aggregate(new StringBuilder(),
(sb, i) => sb.Append(i),
sp => sp.ToString()
);
Console.WriteLine(str);
Dim root As XElement = _
<root>
<para>
<r>
<t>Some text </t>
</r>
<n>
<r>
<t>that is broken up into </t>
</r>
</n>
<n>
<r>
<t>multiple segments.</t>
</r>
</n>
</para>
</root>
Dim textSegs As IEnumerable(Of String) = _
From seg In root...<t> _
Select seg.Value
Dim str As String = textSegs.Aggregate( _
New StringBuilder, _
Function(sb, i) sb.Append(i), _
Function(sb) sb.ToString)
Console.WriteLine(str)
Este código genera el siguiente resultado:
Some text that is broken up into multiple segments.
El siguiente ejemplo muestra la misma consulta sobre un XML que se encuentra en un espacio de nombres.Para obtener más información, vea Trabajar con espacios de nombres XML.
XElement root = XElement.Parse(@"<root xmlns='http://www.adatum.com'>
<para>
<r>
<t>Some text </t>
</r>
<n>
<r>
<t>that is broken up into </t>
</r>
</n>
<n>
<r>
<t>multiple segments.</t>
</r>
</n>
</para>
</root>");
XNamespace ad = "http://www.adatum.com";
IEnumerable<string> textSegs =
from seg in root.Descendants(ad + "t")
select (string)seg;
string str = textSegs.Aggregate(new StringBuilder(),
(sb, i) => sb.Append(i),
sp => sp.ToString()
);
Console.WriteLine(str);
Imports <xmlns='http://www.adatum.com'>
Module Module1
Sub Main()
Dim root As XElement = _
<root>
<para>
<r>
<t>Some text </t>
</r>
<n>
<r>
<t>that is broken up into </t>
</r>
</n>
<n>
<r>
<t>multiple segments.</t>
</r>
</n>
</para>
</root>
Dim textSegs As IEnumerable(Of String) = _
From seg In root...<t> _
Select seg.Value
Dim str As String = textSegs.Aggregate( _
New StringBuilder, _
Function(sb, i) sb.Append(i), _
Function(sb) sb.ToString)
Console.WriteLine(str)
End Sub
End Module
Este código genera el siguiente resultado:
Some text that is broken up into multiple segments.