Condividi tramite


XPathNavigator.ReadSubtree Metodo

Definizione

Restituisce un XmlReader oggetto che contiene 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

Oggetto XmlReader che contiene il nodo corrente e i relativi nodi figlio.

Eccezioni

l'oggetto XPathNavigator non è posizionato in un nodo elemento o nel nodo radice.

Esempio

Nell'esempio seguente viene illustrato l'utilizzo del ReadSubtree metodo sul primo book elemento del contosoBooks.xml file.

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()

L'esempio accetta il contosoBooks.xml file 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 l'oggetto XmlReader viene creato con il nodo corrente e i relativi nodi figlio, la XmlReader proprietà dell'oggetto ReadState viene impostata su Initial. Quando il XmlReader metodo dell'oggetto Read viene chiamato per la prima volta, l'oggetto XmlReader viene spostato nel nodo corrente dell'oggetto XPathNavigator. Il nuovo XmlReader oggetto continua a leggere finché non viene raggiunta la fine dell'albero XML. A questo punto, il Read metodo restituisce false e la XmlReader proprietà dell'oggetto ReadState è impostata su EndOfFile.

Annotazioni

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

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

Annotazioni

Questo comportamento è diverso 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 oggetto XmlReader con l'oggetto desiderato XmlReaderSettings.

Si applica a