XPathNavigator.ReadSubtree 메서드

정의

현재 노드와 해당 자식 노드를 포함하는 XmlReader 개체를 반환합니다.Returns an XmlReader object that contains the current node and its child nodes.

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 개체입니다.An XmlReader object that contains the current node and its child nodes.

예외

요소 노드나 루트 노드에 XPathNavigator의 위치가 지정되지 않았습니다.The XPathNavigator is not positioned on an element node or the root node.

예제

다음 예제를 사용 하는 ReadSubtree 첫 번째 메서드 book 의 요소는 contosoBooks.xml 파일.The following example illustrates using the ReadSubtree method on the first book element of the contosoBooks.xml file.

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 파일을 입력으로 사용합니다.The example takes the contosoBooks.xml file as an input.

  
<?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로 설정됩니다.When the XmlReader object is created with the current node and its child nodes, the XmlReader object's ReadState property is set to Initial. XmlReader 개체의 Read 메서드를 처음으로 호출하면 XmlReaderXPathNavigator의 현재 노드로 이동합니다.When the XmlReader object's Read method is called for the first time, the XmlReader is moved to the current node of the XPathNavigator. XmlReader 개체는 XML 트리 끝에 도달할 때까지 계속 읽습니다.The new XmlReader object continues to read until the end of the XML tree is reached. 이때 Read 메서드는 false를 반환하고 XmlReader 개체의 ReadState 속성은 EndOfFile로 설정됩니다.At this point, the Read method returns false and the XmlReader object's ReadState property is set to EndOfFile.

참고

위치를 변경 합니다 XmlReader 개체의 위치에 영향을 주지 않습니다는 XPathNavigator합니다.Changing the position of the XmlReader object does not affect the position of the XPathNavigator.

현재 노드의 범위에서 네임 스페이스에 대 한 Namespace 선언에 제공 된 XML 스트림을 삽입 되지를 XmlReader 개체입니다.Namespace declarations for the in-scope namespaces of the current node are not inserted into the XML stream provided to the XmlReader object.

참고

다르게이 동작 합니다 WriteSubtree 메서드.This behavior differs from the WriteSubtree method.

이 메서드가 만드는 XmlReader 특정 판독기 설정 및이 메서드를 사용 하는 모듈을 사용 하 여 개체는 이러한 설정을 통해 제어할 수 없습니다.This method creates the XmlReader object with specific reader settings, and the module that uses this method has no control over those settings. 예를 들어이 메서드에서 반환 하는 판독기는 데이터 형식 정의 (Dtd)를 처리 하지 못하도록 합니다.For example, the reader returned by this method prohibits processing Data Type Definitions (DTDs). 판독기에 DTD를 사용 하는 파일을 읽을 하려고 하는 경우 오류가 throw 됩니다 XmlException합니다.If the reader attempts to read a file that uses a DTD, it will throw an error, XmlException. 예외에 대 한 메시지가 Unexpected DTD declaration합니다.The message for the exception will be Unexpected DTD declaration.

사용자 지정을 구현 하 여이 동작을 변경할 수 있습니다 XmlResolver 를 반환 하는 XmlReader 원하는 사용 하 여 XmlReaderSettings입니다.You can change this behavior by implementing a custom XmlResolver that returns an XmlReader with the desired XmlReaderSettings.

적용 대상