XPathNavigator.ReadSubtree Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Returnerar ett XmlReader objekt som innehåller den aktuella noden och dess underordnade noder.
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
Returer
Ett XmlReader objekt som innehåller den aktuella noden och dess underordnade noder.
Undantag
XPathNavigator är inte placerad på en elementnod eller rotnoden.
Exempel
I följande exempel visas hur du använder ReadSubtree metoden för det första book elementet i contosoBooks.xml filen.
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()
Exemplet tar contosoBooks.xml filen som indata.
<?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>
Kommentarer
När objektet XmlReader skapas med den aktuella noden och dess underordnade noder XmlReader är objektets ReadState egenskap inställd på Initial. När XmlReader-metoden på objektet anropas för första gången, flyttas Read till den aktuella noden i XmlReader. Det nya XmlReader objektet fortsätter att läsas tills slutet av XML-trädet har nåtts. Vid denna punkt returnerar Read-metoden false och XmlReader-objektets ReadState-egenskap är inställd på EndOfFile.
Note
Om du ändrar objektets XmlReader position påverkas inte positionen för XPathNavigator.
Namnområdesdeklarationer för namnrymder i omfånget för den aktuella noden infogas inte i XML-dataströmmen som tillhandahålls till XmlReader objektet.
Note
Det här beteendet skiljer sig från WriteSubtree metoden.
Den här metoden skapar XmlReader objektet med specifika läsarinställningar, och modulen som använder den här metoden har ingen kontroll över dessa inställningar. Läsaren som returneras med den här metoden förbjuder till exempel bearbetning av datatypsdefinitioner (DTD). Om läsaren försöker läsa en fil som använder en DTD utlöser den ett fel, XmlException. Meddelandet för undantaget blir Unexpected DTD declaration.
Du kan ändra det här beteendet genom att implementera en anpassad XmlResolver som returnerar en XmlReader med önskad XmlReaderSettings.