Questa pagina è stata utile?
I suggerimenti relativi al contenuto di questa pagina sono importanti. Comunicaceli.
Altri suggerimenti?
1500 caratteri rimanenti
Esporta (0) Stampa
Espandi tutto
Il presente articolo è stato tradotto automaticamente. Passare il puntatore sulle frasi nell'articolo per visualizzare il testo originale. Ulteriori informazioni.
Traduzione
Originale

Metodo XPathNavigator.ReadSubtree

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

Spazio dei nomi:  System.Xml.XPath
Assembly:  System.Xml (in System.Xml.dll)

public virtual XmlReader ReadSubtree()

Valore restituito

Tipo: System.Xml.XmlReader
Oggetto XmlReader contenente il nodo corrente e i relativi nodi figlio.

EccezioneCondizione
InvalidOperationException

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

Quando l'oggetto XmlReader viene creato con il nodo corrente e i relativi nodi figlio, la proprietà ReadState dell'oggetto XmlReader viene impostata su Initial. Quando il metodo Read dell'oggetto XmlReader 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 della struttura ad albero XML. A questo punto, il metodo Read restituisce false e la proprietà ReadState dell'oggetto XmlReader viene impostata su EndOfFile.

NotaNota

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

Le dichiarazioni degli spazi dei nomi per gli spazi dei nomi inclusi nell'ambito del nodo corrente non vengono inserite nel flusso XML specificato per l'oggetto XmlReader.

NotaNota

Questo comportamento è diverso da quello del metodo WriteSubtree.

Questo metodo crea l'oggetto XmlReader con le impostazioni del lettore specifiche e il modulo che utilizza il metodo non ha alcun controllo su tali impostazioni. Ad esempio, il lettore restituito da questo metodo proibisce l'elaborazione di DTD (Data Type Definition). Se il lettore tenta di leggere un file che utilizza un DTD, viene generato un errore, ovvero l'eccezione XmlException. Il messaggio dell'eccezione sarà Unexpected DTD declaration.

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

Nell'esempio riportato di seguito viene illustrato l'utilizzo del metodo ReadSubtree nel primo elemento book del file 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();


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


.NET Framework

Supportato in: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Supportato in: 4, 3.5 SP1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (ruoli di base del server non supportati), Windows Server 2008 R2 (ruoli di base del server supportati con SP1 o versione successiva, Itanium non supportato)

.NET Framework non supporta tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.

Aggiunte alla community

AGGIUNGI
Mostra:
© 2015 Microsoft