XPathNavigator.ReadSubtree 메서드

정의

현재 노드와 해당 자식 노드를 포함하는 XmlReader 개체를 반환합니다.

public:
 virtual System::Xml::XmlReader ^ ReadSubtree();
public virtual System.Xml.XmlReader ReadSubtree ();
abstract member ReadSubtree : unit -> System.Xml.XmlReader
override this.ReadSubtree : unit -> System.Xml.XmlReader
Public Overridable Function ReadSubtree () As XmlReader

반환

XmlReader

현재 노드와 해당 자식 노드를 포함하는 XmlReader 개체입니다.

예외

요소 노드나 루트 노드에 XPathNavigator의 위치가 지정되지 않았습니다.

예제

다음 예제에서는 파일의 ReadSubtree 첫 번째 book 요소에서 메서드를 사용하는 방법을 보여 줍니다 contosoBooks.xml .

XPathDocument^ document = gcnew XPathDocument("contosoBooks.xml");
XPathNavigator^ navigator = document->CreateNavigator();

navigator->MoveToChild("bookstore", "http://www.contoso.com/books");
navigator->MoveToChild("book", "http://www.contoso.com/books");

XmlReader^ reader = navigator->ReadSubtree();

while (reader->Read())
{
    Console::WriteLine(reader->ReadInnerXml());
}

reader->Close();
XPathDocument document = new XPathDocument("contosoBooks.xml");
XPathNavigator navigator = document.CreateNavigator();

navigator.MoveToChild("bookstore", "http://www.contoso.com/books");
navigator.MoveToChild("book", "http://www.contoso.com/books");

XmlReader reader = navigator.ReadSubtree();

while (reader.Read())
{
    Console.WriteLine(reader.ReadInnerXml());
}

reader.Close();
Dim document As XPathDocument = New XPathDocument("contosoBooks.xml")
Dim navigator As XPathNavigator = document.CreateNavigator()

navigator.MoveToChild("bookstore", "http://www.contoso.com/books")
navigator.MoveToChild("book", "http://www.contoso.com/books")

Dim reader As XmlReader = navigator.ReadSubtree()

While reader.Read()
    Console.WriteLine(reader.ReadInnerXml())
End While

reader.Close()

이 예제에서는 contosoBooks.xml 파일을 입력으로 사용합니다.

<?xml version="1.0" encoding="utf-8" ?>  
<bookstore xmlns="http://www.contoso.com/books">  
    <book genre="autobiography" publicationdate="1981-03-22" ISBN="1-861003-11-0">  
        <title>The Autobiography of Benjamin Franklin</title>  
        <author>  
            <first-name>Benjamin</first-name>  
            <last-name>Franklin</last-name>  
        </author>  
        <price>8.99</price>  
    </book>  
    <book genre="novel" publicationdate="1967-11-17" ISBN="0-201-63361-2">  
        <title>The Confidence Man</title>  
        <author>  
            <first-name>Herman</first-name>  
            <last-name>Melville</last-name>  
        </author>  
        <price>11.99</price>  
    </book>  
    <book genre="philosophy" publicationdate="1991-02-15" ISBN="1-861001-57-6">  
        <title>The Gorgias</title>  
        <author>  
            <name>Plato</name>  
        </author>  
        <price>9.99</price>  
    </book>  
</bookstore>  

설명

현재 노드 및 자식 노드를 사용하여 XmlReader 개체를 만든 경우 XmlReader 개체의 ReadState 속성은 Initial로 설정됩니다. XmlReader 개체의 Read 메서드를 처음으로 호출하면 XmlReaderXPathNavigator의 현재 노드로 이동합니다. 새 XmlReader 개체는 XML 트리 끝에 도달할 때까지 계속 읽습니다. 이때 Read 메서드는 false를 반환하고 XmlReader 개체의 ReadState 속성은 EndOfFile로 설정됩니다.

참고

개체의 위치를 변경해도 개체의 XmlReader XPathNavigator위치에는 영향을 주지 않습니다.

현재 노드의 범위 내 네임스페이스에 대한 네임스페이스 선언은 개체에 제공된 XmlReader XML 스트림에 삽입되지 않습니다.

참고

이 동작은 메서드와 WriteSubtree 다릅니다.

이 메서드는 특정 판독기 XmlReader 설정을 사용하여 개체를 만들고, 이 메서드를 사용하는 모듈은 이러한 설정을 제어할 수 없습니다. 예를 들어 이 메서드에서 반환된 판독기는 DTD(데이터 형식 정의) 처리를 금지합니다. 판독기에서 DTD를 사용하는 파일을 읽으려고 하면 오류가 XmlException발생합니다. 예외에 대한 메시지는 다음과 입니다 Unexpected DTD declaration.

원하는 XmlReaderSettings항목을 반환하는 사용자 지정 XmlResolver 을 구현하여 이 동작을 XmlReader 변경할 수 있습니다.

적용 대상