XPathNavigator.ReadSubtree Metodo

Definizione

Restituisce un oggetto XmlReader contenente il nodo corrente e i relativi nodi figlio.

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

Restituisce

XmlReader

Oggetto XmlReader contenente il nodo corrente e i relativi nodi figlio.

Eccezioni

L'oggetto XPathNavigator non è posizionato in corrispondenza di un nodo elemento o del nodo radice.

Esempio

Nell'esempio seguente viene illustrato l'uso ReadSubtree del metodo nel primo book elemento del 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()

Nell'esempio il file contosoBooks.xml viene considerato come 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>  

Commenti

Quando viene creato l'oggetto XmlReader con il nodo corrente e i relativi nodi figlio, la proprietà XmlReader dell'oggetto ReadState viene impostata su Initial. Quando il metodo XmlReader dell'oggetto Read viene chiamato la prima volta, l'oggetto XmlReader viene spostato sul nodo corrente dell'oggetto XPathNavigator. Il nuovo oggetto XmlReader prosegue la lettura fino a quando non viene raggiunta la fine dell'albero XML. A questo punto il metodo Read restituisce false e la proprietà XmlReader dell'oggetto ReadState viene impostata su EndOfFile.

Nota

La modifica della posizione dell'oggetto XmlReader non influisce sulla posizione di XPathNavigator.

Le dichiarazioni dello spazio dei nomi per gli spazi dei nomi nell'ambito del nodo corrente non vengono inseriti nel flusso XML fornito all'oggetto XmlReader .

Nota

Questo comportamento differisce dal WriteSubtree metodo .

Questo metodo crea l'oggetto XmlReader con impostazioni di lettura specifiche e il modulo che usa questo metodo non ha alcun controllo su tali impostazioni. Ad esempio, il lettore restituito da questo metodo impedisce l'elaborazione delle definizioni dei tipi di dati (DTD). Se il lettore tenta di leggere un file che usa un DTD, genererà un errore, XmlException. Il messaggio per l'eccezione sarà Unexpected DTD declaration.

È possibile modificare questo comportamento implementando un oggetto personalizzato XmlResolver che restituisce un XmlReader oggetto con l'oggetto desiderato XmlReaderSettings.

Si applica a