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>
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;
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
'sourcetip' 카테고리의 다른 글
asp.net 에서 서버 캐시를 지우려면 어떻게 해야 합니까? (0) | 2023.05.18 |
---|---|
jQuery를 사용하여 div에서 선택한 확인란 목록 가져오기 (0) | 2023.05.18 |
이클립스 작업 공간에서 프로젝트 목록은 어디에 저장됩니까? (0) | 2023.05.18 |
Mongo DB 및 Django와 함께 사용해야 하는 Python API (0) | 2023.05.18 |
VB.NET 스위치 설명 Go To Case (0) | 2023.05.18 |