Suchen nach Nachfolgern mit einem bestimmten Elementnamen (LINQ to XML)
Es kann vorkommen, dass Sie alle Nachfolgerelemente mit einem bestimmten Namen ermitteln möchten. Dazu könnten Sie Code schreiben, der alle Nachfolgerelemente durchläuft, einfacher ist es aber, die Descendants-Achse zu verwenden.
Beispiel: Suchen nach Nachfolgern mit einem bestimmten Elementnamen
Das folgende Beispiel zeigt, wie Nachfolgerelemente mit einem bestimmten Elementnamen gefunden werden.
XElement root = XElement.Parse(@"<root>
<para>
<r>
<t>Some text </t>
</r>
<n>
<r>
<t>that's 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's 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)
Dieses Beispiel erzeugt die folgende Ausgabe:
Some text that's broken up into multiple segments.
Beispiel: Suchen, wenn sich das XML in einem Namespace befindet
Im folgenden Beispiel wird dieselbe Abfrage für XML in einem Namespace gezeigt. Weitere Informationen finden Sie unter Übersicht über Namespaces.
XElement root = XElement.Parse(@"<root xmlns='http://www.adatum.com'>
<para>
<r>
<t>Some text </t>
</r>
<n>
<r>
<t>that's 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's 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
Dieses Beispiel erzeugt die folgende Ausgabe:
Some text that's broken up into multiple segments.
Siehe auch
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für