XML은 자기 기술적(self-describing) 언어로, 데이터 자체뿐만 아니라 그 안에 어떤 정보가 담겨 있는지 식별하는 규칙까지 함께 제공합니다. HTML과 마찬가지로 XML은 SGML(Standard Generalized Markup Language, 표준 범용 마크업 언어)의 하위 집합입니다.
XDocument 클래스는 유효한(valid) XML 문서를 구성하는 데 필요한 정보를 담고 있습니다. 여기에는 XML 선언부, 처리 명령(processing instructions), 주석 등이 포함됩니다.
단, XDocument 클래스가 제공하는 특수한 기능이 실제로 필요한 경우에만 XDocument 객체를 생성하면 됩니다. 대부분의 상황에서는 XElement만으로도 충분히 작업할 수 있으며, XElement를 직접 다루는 것이 더 단순한 프로그래밍 모델입니다.
XDocument는 XContainer를 상속하므로 자식 노드를 가질 수 있습니다. 다만 XDocument 객체가 가질 수 있는 자식 XElement 노드는 단 하나뿐입니다. 이는 XML 표준에서 "하나의 XML 문서에는 루트 요소가 하나만 존재해야 한다"는 규칙을 반영한 것입니다. XDocument는 System.Xml.Linq 네임스페이스에서 제공됩니다.
XDocument.Parse()로 문자열을 XML로 변환하기
아래와 같이 XML 형식으로 작성된 문자열이 있고, 이를 XDocument 객체로 채워야 한다고 가정해 보겠습니다.
<Departments>
<Department>Account</Department>
<Department>Sales</Department>
<Department>Pre-Sales</Department>
<Department>Marketing</Department>
</Departments>
문자열을 XDocument로 변환하려면 XDocument.Parse() 메서드를 사용합니다.
using System;
using System.Xml.Linq;
namespace DemoApplication {
public class Program {
public static void Main() {
string xmlString = @"<Departments>
<Department>Account</Department>
<Department>Sales</Department>
<Department>Pre-Sales</Department>
<Department>Marketing</Department>
</Departments>";
XDocument xml = XDocument.Parse(xmlString);
Console.ReadLine();
}
}
}
XDocument.Load()로 파일을 XML로 변환하기
마찬가지로 XML 내용을 담고 있는 파일을 XDocument 객체로 변환하고 싶다면 XDocument.Load(path) 메서드를 사용하면 됩니다.
using System;
using System.Xml.Linq;
namespace DemoApplication {
public class Program {
public static void Main() {
string xmlPath = @"D:\DemoXml.txt";
XDocument xml = XDocument.Load(xmlPath);
Console.ReadLine();
}
}
}
실행 결과
위 두 가지 방법 모두 XML 문자열(또는 파일)이 아래 이미지와 같이 XDocument 객체로 변환됩니다.
