[C#] Linq와 XML 후손 및 요소의 차이점

VS IntelliSense 에서이 키워드를 모두 보았습니다. 나는 그들 사이의 차이점을 찾으려고 노력했지만 명확한 대답을 얻지 못했습니다. 중소 규모 XML 파일에서 가장 우수한 성능을 발휘하는 것은 무엇입니까? 감사



답변

Elements직계 자손 즉 직계 자녀 인 요소 만 찾습니다 .

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현재 요소의 직계 자식 만 검색합니다.


답변