HOW TO:尋找具有特定項目名稱的子系
有時候您會想要尋找具有特定名稱的所有子代。 您可以撰寫程式碼來逐一查看所有子代,但是使用 Descendants 座標軸比較容易。
範例
下列範例顯示如何根據項目名稱尋找子代。
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)
此程式碼會產生下列輸出:
Some text that is broken up into multiple segments.
下列範例顯示命名空間中之 XML 的相同查詢。 如需詳細資訊,請參閱使用 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
這個程式碼產生下列輸出:
Some text that is broken up into multiple segments.