XPathNavigator.ReadSubtree メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
現在のノードとその子ノードが格納された 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。
例外
XPathNavigator が要素ノードまたはルート ノードのいずれにも配置されていません。
例
次の例は、ファイルの最初book
のReadSubtree要素でメソッドを使用する方法を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 メソッドが初めて呼び出されたときに、XmlReader が XPathNavigator の現在のノードに移動されます。 新しい XmlReader オブジェクトは、XML ツリーの末尾に到達するまで読み取りを継続します。 この時点で、Read メソッドは false
を返し、XmlReader オブジェクトの ReadState プロパティは EndOfFile に設定されます。
注意
オブジェクトの位置を変更しても、 XmlReader オブジェクトの位置には XPathNavigator影響しません。
現在のノードのスコープ内名前空間の名前空間宣言は、オブジェクトに提供される XML ストリームには XmlReader 挿入されません。
注意
この動作はメソッドとは WriteSubtree 異なります。
このメソッドは、特定のリーダー設定を XmlReader 持つオブジェクトを作成します。このメソッドを使用するモジュールは、これらの設定を制御しません。 たとえば、このメソッドによって返されるリーダーは、データ型定義 (DTD) の処理を禁止します。 リーダーが DTD を使用するファイルを読み取ろうとすると、エラー XmlExceptionがスローされます。 例外のメッセージは次のように表示 Unexpected DTD declaration
されます。
この動作を変更するには、目的XmlReaderSettingsの値を持つオブジェクトをXmlReader返すカスタムXmlResolverを実装します。