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は、要素ノードまたはルート ノードには配置されません。
例
次の例は、ReadSubtree ファイルの最初のbook要素で contosoBooks.xml メソッドを使用する方法を示しています。
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 に設定されます。
Note
XmlReader オブジェクトの位置を変更しても、XPathNavigatorの位置には影響しません。
現在のノードのスコープ内名前空間の名前空間宣言は、 XmlReader オブジェクトに提供される XML ストリームには挿入されません。
Note
この動作は、 WriteSubtree メソッドとは異なります。
このメソッドは、特定のリーダー設定を使用して XmlReader オブジェクトを作成します。このメソッドを使用するモジュールは、これらの設定を制御しません。 たとえば、このメソッドによって返されるリーダーは、データ型定義 (DTD) の処理を禁止します。 リーダーが DTD を使用するファイルを読み取ろうとすると、エラー XmlExceptionスローされます。 例外のメッセージは Unexpected DTD declarationされます。
この動作を変更するには、目的のXmlResolverでXmlReaderを返すカスタム XmlReaderSettingsを実装します。