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 が要素ノードまたはルート ノードのいずれにも配置されていません。

次の例は、ファイルの最初bookReadSubtree要素でメソッドを使用する方法を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影響しません。

現在のノードのスコープ内名前空間の名前空間宣言は、オブジェクトに提供される XML ストリームには XmlReader 挿入されません。

注意

この動作はメソッドとは WriteSubtree 異なります。

このメソッドは、特定のリーダー設定を XmlReader 持つオブジェクトを作成します。このメソッドを使用するモジュールは、これらの設定を制御しません。 たとえば、このメソッドによって返されるリーダーは、データ型定義 (DTD) の処理を禁止します。 リーダーが DTD を使用するファイルを読み取ろうとすると、エラー XmlExceptionがスローされます。 例外のメッセージは次のように表示 Unexpected DTD declarationされます。

この動作を変更するには、目的XmlReaderSettingsの値を持つオブジェクトをXmlReader返すカスタムXmlResolverを実装します。

適用対象