XPathNavigator.ReadSubtree Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
XmlReader Zwraca obiekt zawierający bieżący węzeł i jego węzły podrzędne.
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
Zwraca
XmlReader Obiekt, który zawiera bieżący węzeł i jego węzły podrzędne.
Wyjątki
Element XPathNavigator nie jest umieszczony w węźle elementu ani w węźle głównym.
Przykłady
Poniższy przykład ilustruje użycie ReadSubtree metody w pierwszym book
elemecie contosoBooks.xml
pliku.
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()
W przykładzie plik jest contosoBooks.xml
pobierany jako dane wejściowe.
<?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>
Uwagi
Po utworzeniu XmlReader obiektu przy użyciu bieżącego węzła i jego węzłów XmlReader podrzędnych właściwość obiektu jest ustawiona ReadState na Initialwartość . XmlReader Gdy metoda obiektu jest wywoływana Read po raz pierwszy, XmlReader obiekt jest przenoszony do bieżącego węzła obiektu XPathNavigator. Nowy XmlReader obiekt będzie nadal odczytywany do momentu osiągnięcia końca drzewa XML. W tym momencie Read metoda zwraca false
wartość , a XmlReader właściwość obiektu jest ustawiona ReadState na EndOfFilewartość .
Uwaga
Zmiana położenia XmlReader obiektu nie ma wpływu na położenie XPathNavigatorobiektu .
Deklaracje przestrzeni nazw dla przestrzeni nazw w zakresie bieżącego węzła nie są wstawiane do strumienia XML dostarczonego XmlReader do obiektu.
Uwaga
To zachowanie różni się od WriteSubtree metody .
Ta metoda tworzy XmlReader obiekt z określonymi ustawieniami czytnika, a moduł, który używa tej metody, nie ma kontroli nad tymi ustawieniami. Na przykład czytnik zwrócony przez tę metodę uniemożliwia przetwarzanie definicji typów danych (DTD). Jeśli czytelnik spróbuje odczytać plik używający dtD, zgłosi błąd . XmlException Komunikat dla wyjątku będzie następujący Unexpected DTD declaration
: .
To zachowanie można zmienić, implementując niestandardowy obiekt XmlResolver , który zwraca XmlReader obiekt z żądanym elementem XmlReaderSettings.