VS IntelliSenseでこれらの両方のキーワードに出会いました。私はそれらの違いをググってみましたが、明確な答えが得られませんでした。これらのどれが、小規模から中規模のXMLファイルで最高のパフォーマンスを発揮します。ありがとう
Elements
は、direct子孫、つまり直接の子である要素のみを検索します。
Descendants
あらゆるレベルの子供、つまり子供、孫などを見つけます...
違いを示す例を次に示します。
<?xml version="1.0" encoding="utf-8" ?>
<foo>
<bar>Test 1</bar>
<baz>
<bar>Test 2</bar>
</baz>
<bar>Test 3</bar>
</foo>
コード:
XDocument doc = XDocument.Load("input.xml");
XElement root = doc.Root;
foreach (XElement e in root.Elements("bar"))
{
Console.WriteLine("Elements : " + e.Value);
}
foreach (XElement e in root.Descendants("bar"))
{
Console.WriteLine("Descendants : " + e.Value);
}
結果:
要素:テスト1 要素:テスト3 子孫:テスト1 子孫:テスト2 子孫:テスト3
必要な要素が直接の子であることがわかっている場合、Elements
の代わりにDescendants
を使用すると、パフォーマンスが向上します。
Descendants
は、指定された名前の現在の要素のサブツリー全体を検索します(または、名前が指定されていない場合はツリーのフラット化されたバージョンを返します)が、Elements
は現在の要素の直接の子のみを検索します。