XPathDocument 및 XmlDocument를 사용하여 XML 데이터 읽기

두 가지 방법으로 System.Xml.XPath 네임스페이스에서 XML 문서를 읽을 수 있습니다. 하나는 읽기 전용 XPathDocument 클래스를 사용하여 XML 문서를 읽는 것이고 다른 하나는 XmlDocument 네임스페이스에서 편집 가능한 System.Xml 클래스를 사용하여 XML 문서를 읽는 것입니다.

XPathDocument 클래스를 사용하여 XML 문서 읽기

XPathDocument 클래스는 XPath 데이터 모델을 사용하여 빠른 속도의 읽기 전용 메모리 내 XML 문서 표현을 제공합니다. 6개 생성자 중 하나를 사용하여 XPathDocument 클래스의 인스턴스가 생성됩니다. 이러한 생성자를 사용하면 XML 파일에 대한 Stream 경로뿐 아니라 TextReader, XmlReader 또는 string 개체를 사용하여 XML 문서를 읽을 수 있습니다.

다음 예제에서는 XPathDocument 클래스의 string 생성자를 사용하여 XML 문서를 읽는 방법을 보여 줍니다.

Dim document As XPathDocument = New XPathDocument("books.xml")  
XPathDocument document = new XPathDocument("books.xml");  

XmlDocument 클래스를 사용하여 XML 문서 읽기

XmlDocument 클래스는 W3C DOM(문서 개체 모델) Level 1 Core 및 DOM Level 2 Core를 구현하는 XML 문서의 편집 가능한 메모리 내 표현입니다. 세 가지 생성자 중 하나를 사용하여 XmlDocument 클래스의 인스턴스가 생성됩니다. 매개 변수 없이 XmlDocument 클래스 생성자를 호출하여 비어 있는 새 XmlDocument 개체를 만들 수 있습니다. 생성자를 호출한 후 Load 메서드를 사용하여 XML 파일의 XmlDocument 경로뿐 아니라 Stream, TextReader 또는 XmlReader 개체에서 새 string 개체로 XML 데이터를 로드합니다.

다음 예제에서는 매개 변수 없이 XmlDocument 클래스 생성자 및 Load 메서드를 사용하여 XML 문서를 읽는 방법을 보여 줍니다.

Dim document As XmlDocument = New XmlDocument()  
document.Load("books.xml")  
XmlDocument document = new XmlDocument();  
document.Load("books.xml");  

XML 문서의 인코딩 결정

이전 단원에 표시된 것과 같이 XmlReader 개체를 사용하여 XML 문서를 읽고 XPathDocumentXmlDocument 개체를 만들 수 있습니다. 그러나 XmlReader 개체는 인코딩되지 않은 데이터를 읽을 수 있으며 이러한 경우 인코딩 정보를 제공하지 않습니다.

XmlTextReader 클래스는 XmlReader 클래스에서 상속되며 Encoding 속성을 사용하여 인코딩 정보를 제공합니다. 또한 XPathDocument 개체 또는 XmlDocument 개체를 만드는 데 사용할 수도 있습니다.

XmlTextReader 클래스에서 제공하는 인코딩 정보에 대한 자세한 내용은 Encoding 클래스 참조 문서의 XmlTextReader 속성을 참조하세요.

XPathNavigator 개체 만들기

XPathDocument 또는 XmlDocument 개체로 XML 문서를 읽어온 후 XPathNavigator 개체를 만들어 기본 XML 데이터를 선택, 평가 및 탐색할 수 있으며 일부 경우에 편집할 수도 있습니다.

XPathDocument 클래스와 더불어 XmlDocumentXmlNode 클래스는 IXPathNavigable 네임스페이스의 System.Xml.XPath 인터페이스를 구현합니다. 결과적으로 세 클래스는 모두 CreateNavigator 개체를 반환하는 XPathNavigator 메서드를 제공합니다.

XPathNavigator 클래스를 사용하여 XML 문서 편집

XPathNavigator 클래스를 사용하여 XML 데이터를 선택, 평가 및 탐색할 수 있을 뿐 아니라 XML 문서가 생성된 개체를 기반으로 XML 문서를 편집할 수도 있습니다.

XPathDocument 클래스는 읽기 전용인 반면, XmlDocument 클래스는 편집 가능하므로 XPathNavigator 개체에서 만든 XPathDocument 개체는 XML 문서를 편집하는 데 사용할 수 없는 반면, XmlDocument 개체에서 만든 개체는 사용할 수 있습니다. XML 문서를 읽기만 하려면 XPathDocument 클래스를 사용해야 합니다. XML 문서를 편집해야 하거나 XmlDocument 클래스에서 제공하는 이벤트 처리 등의 추가 기능에 액세스해야 할 경우 XmlDocument 클래스를 사용해야 합니다.

CanEdit 클래스의 XPathNavigator 속성은 XPathNavigator 개체가 XML 데이터를 편집할 수 있는지 여부를 지정합니다.

다음 표에서는 각 클래스에 대한 CanEdit 속성 값에 대해 설명합니다.

IXPathNavigable 구현 CanEdit
XPathDocument false
XmlDocument true

참고 항목