XPathNavigator.ReadSubtree メソッド
定義
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 メソッドが初めて呼び出されたときに、XmlReader が XPathNavigator の現在のノードに移動されます。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.
現在のノードのスコープ内の名前空間の名前空間宣言は、オブジェクトに指定された 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 を使用するファイルを読み取ろうとすると、エラーがスローされ 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.