XPathNavigator.ReadSubtree XPathNavigator.ReadSubtree XPathNavigator.ReadSubtree XPathNavigator.ReadSubtree Method

定義

現在のノードとその子ノードが格納された 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

戻り値

現在のノードとその子ノードが格納された XmlReaderAn 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 contosoBooks.xmlファイルの最初bookの要素に対してメソッドを使用する方法を示しています。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.

現在のノードのスコープ内の名前空間の名前空間宣言は、 XmlReaderオブジェクトに指定された XML ストリームには挿入されません。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 を使用するファイルを読み取ろうとすると、エラー 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 XmlReaderSettingsなをXmlReader使用してを返すカスタムを実装します。You can change this behavior by implementing a custom XmlResolver that returns an XmlReader with the desired XmlReaderSettings.

適用対象