sourcetip

XElement와 XDocument의 차이점은 무엇입니까?

fileupload 2023. 5. 18. 21:27
반응형

XElement와 XDocument의 차이점은 무엇입니까?

사이의 차이점은 무엇입니까?XElement그리고.XDocument그리고 당신은 언제 각각을 사용합니까?

XDocument는 전체 XML 문서를 나타냅니다.일반적으로 여러 요소로 구성됩니다.

XElement는 XML 요소(속성, 하위 등 포함)를 나타냅니다.더 큰 문서의 일부입니다.

전체 XML 문서로 작업할 때는 XDocument를 사용하고 XML 요소로 작업할 때는 XElement를 사용합니다.

예를 들어 -XElement을 가지고 있습니다.HasAttributes요소에 속성이 존재하는지 여부를 나타내는 속성.XDocument그렇지 않습니다. 이러한 속성은 전체 XML 문서의 맥락에서 의미가 없기 때문입니다.

MSDN에서:

XDocument 클래스에서 제공하는 특정 기능이 필요한 경우에만 XDocument 개체를 만들어야 합니다.대부분의 경우 XElement와 직접 작업할 수 있습니다.XElement로 직접 작업하는 것이 더 간단한 프로그래밍 모델입니다.

XDocument는 XContainer에서 파생됩니다.따라서 하위 노드를 포함할 수 있습니다.그러나 XDocument 객체에는 자식 XElement 노드가 하나만 있을 수 있습니다.이것은 XML 문서에 루트 요소가 하나만 있을 수 있다는 XML 표준을 반영합니다.

여기 msdn의 실제 사례가 있습니다.test.xml 파일에 다음이 있다고 가정합니다.

<Root>
    <Child1>1</Child1>
    <Child2>2</Child2>
    <Child3>3</Child3>
</Root>
  1. XDocument를 사용하여 다음 작업을 수행합니다.

    foreach (var element in XDocument.Load("test.xml").Elements())
        Console.WriteLine(element);
    

    다음과 같은 이점을 얻을 수 있습니다.

    <Root>
        <Child1>1</Child1>
        <Child2>2</Child2>
        <Child3>3</Child3>
    </Root>
    

    값을 구하는 방법Child1노드, 다음을 수행해야 합니다.

    var child1 = XDocument.Load("test.xml").Element("Root").Element("Child1").Value;
    

    또는

    var child1 = XDocument.Load("test.xml").Root.Element("Child1").Value;
    
  2. XElement를 사용하여 다음 작업을 수행합니다.

    foreach (var element in XElement.Load("test.xml").Elements())
        Console.WriteLine(element);
    

    다음과 같은 이점을 얻을 수 있습니다.

    <Child1>1</Child1>
    <Child2>2</Child2>
    <Child3>3</Child3>
    

    값을 구하는 방법Child1노드, 다음 작업을 수행합니다.

    var child1 = XElement.Load("test.xml").Element("Child1").Value;
    

요컨대,XElement루트 노드를 무시하는 동안XDocument하지 않습니다.대략,XDocument.Root = XElement또는XDocument.Root.Elements() = XElement.Elements()둘 다 에서 파생됩니다.XContainer또 다른 사소한 차이점은XElement도구들IXmlSerializable제가 생각하기에 가장 중요하지 않은 것은 XElement하위 노드를 쿼리하려는 대부분의 경우에는 충분합니다.하지만 그 이름은 저를 혼란스럽게 해서 저는 사용하는 것을 선호합니다.XDocument.

MSDN 기사 LINQ to XML vs. DOM에 따르면, "XML 요소와 직접 작업" 하위 제목 아래에 있습니다.

LINQ to XML을 사용할 때 문서의 루트 수준에서 주석 또는 처리 명령을 추가하려는 경우에만 XDocument 클래스를 사용합니다.

언급URL : https://stackoverflow.com/questions/3879868/whats-the-difference-between-xelement-and-xdocument

반응형