Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Aktualisiert: November 2007
Es gibt in Microsoft .NET Framework mehre Möglichkeiten zur Darstellung eines XML-Dokuments. Es kann ein String oder eine der Klassen XmlReader, XmlWriter, XmlDocument oder XPathDocument verwendet werden. Um den Wechsel zwischen verschiedenen Darstellungen eines XML-Dokuments zu erleichtern, stellt die XPathNavigator-Klasse eine Reihe von Methoden und Eigenschaften zum Extrahieren von XML als String, als XmlReader-Objekt oder als XmlWriter-Objekt bereit.
Konvertiert einen "XPathNavigator" in eine Zeichenfolge.
Die OuterXml-Eigenschaft der XPathNavigator-Klasse wird zum Abrufen des Markups des ganzen XML-Dokuments oder des Markups eines einzelnen Knotens und seiner untergeordneten Knoten verwendet.
Hinweis: |
|---|
Die InnerXml-Eigenschaft ruft das Markup der einem Knoten untergeordneten Knoten ab. |
Im folgenden Codebeispiel wird das ganze in einem XPathNavigator-Objekt enthaltene XML-Dokument sowohl als String als auch als einzelner Knoten mit untergeordneten Knoten gespeichert.
Dim document As XPathDocument = New XPathDocument("input.xml")
Dim navigator As XPathNavigator = document.CreateNavigator()
' Save the entire input.xml document to a string.
Dim xml As String = navigator.OuterXml
' Now save the Root element and its child nodes to a string.
navigator.MoveToChild(XPathNodeType.Element)
Dim root As String = navigator.OuterXml
XPathDocument document = new XPathDocument("input.xml");
XPathNavigator navigator = document.CreateNavigator();
// Save the entire input.xml document to a string.
string xml = navigator.OuterXml;
// Now save the Root element and its child nodes to a string.
navigator.MoveToChild(XPathNodeType.Element);
string root = navigator.OuterXml;
Konvertiert von "XPathNavigator" in "XmlReader"
Mit der ReadSubtree-Methode wird gesamte Inhalt eines XML-Dokuments oder nur ein einzelner Knoten und seine untergeordneten Knoten als Stream in ein XmlReader-Objekt übertragen.
Beim Erstellen des XmlReader-Objekts aus dem aktuellen Knoten und den untergeordneten Knoten wird die ReadState-Eigenschaft des XmlReader-Objekts auf Initial festgelegt. Wenn die Read-Methode des XmlReader-Objekts zum ersten Mal aufgerufen wird, wird der XmlReader auf dem aktuellen Knoten des XPathNavigator positioniert. Das neue XmlReader-Objekt liest, bis das Ende der XML-Struktur erreicht ist. In diesem Fall gibt die Read-Methode false zurück und die ReadState-Eigenschaft des XmlReader-Objekts wird auf EndOfFile festgelegt.
Die Position des XPathNavigator-Objekts wird durch das Erstellen oder das Verschieben des XmlReader-Objekts nicht geändert. Ein Aufruf der ReadSubtree-Methode ist nur dann zulässig, wenn das Objekt auf einem Element oder auf dem Stammknoten positioniert ist.
Im folgenden Beispiel wird ein XmlReader-Objekt erstellt, das das ganze XML-Dokument sowohl in einem XPathDocument-Objekt als auch als einzelnen Knoten mit untergeordneten Knoten enthält.
Dim document As XPathDocument = New XPathDocument("books.xml")
Dim navigator As XPathNavigator = document.CreateNavigator()
' Stream the entire XML document to the XmlReader.
Dim xml As XmlReader = navigator.ReadSubtree()
While xml.Read()
Console.WriteLine(xml.ReadInnerXml())
End While
xml.Close()
' Stream the book element and its child nodes to the XmlReader.
navigator.MoveToChild("bookstore", "")
navigator.MoveToChild("book", "")
Dim book As XmlReader = navigator.ReadSubtree()
While book.Read()
Console.WriteLine(book.ReadInnerXml())
End While
book.Close()
XPathDocument document = new XPathDocument("books.xml");
XPathNavigator navigator = document.CreateNavigator();
// Stream the entire XML document to the XmlReader.
XmlReader xml = navigator.ReadSubtree();
while (xml.Read())
{
Console.WriteLine(xml.ReadInnerXml());
}
xml.Close();
// Stream the book element and its child nodes to the XmlReader.
navigator.MoveToChild("bookstore", "");
navigator.MoveToChild("book", "");
XmlReader book = navigator.ReadSubtree();
while (book.Read())
{
Console.WriteLine(book.ReadInnerXml());
}
book.Close();
In diesem Beispiel wird die Datei books.xml als Eingabe verwendet.
<bookstore>
<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>
Konvertieren von "XPathNavigator" in "XmlWriter"
Mit der WriteSubtree-Methode wird gesamte Inhalt eines XML-Dokuments oder nur ein einzelner Knoten und seine untergeordneten Knoten als Stream in ein XmlWriter-Objekt übertragen.
Die Position des XPathNavigator-Objekts wird durch das Erstellen des XmlWriter-Objekts nicht geändert.
Im folgenden Beispiel wird ein XmlWriter-Objekt erstellt, das das ganze XML-Dokument sowohl in einem XPathDocument-Objekt als auch als einzelnen Knoten mit untergeordneten Knoten enthält.
Dim document As XPathDocument = New XPathDocument("books.xml")
Dim navigator As XPathNavigator = document.CreateNavigator()
' Stream the entire XML document to the XmlWriter.
Dim xml As XmlWriter = XmlWriter.Create("newbooks.xml")
navigator.WriteSubtree(xml)
xml.Close()
' Stream the book element and its child nodes to the XmlWriter.
navigator.MoveToChild("bookstore", "")
navigator.MoveToChild("book", "")
Dim book As XmlWriter = XmlWriter.Create("book.xml")
navigator.WriteSubtree(book)
book.Close()
XPathDocument document = new XPathDocument("books.xml");
XPathNavigator navigator = document.CreateNavigator();
// Stream the entire XML document to the XmlWriter.
XmlWriter xml = XmlWriter.Create("newbooks.xml");
navigator.WriteSubtree(xml);
xml.Close();
// Stream the book element and its child nodes to the XmlWriter.
navigator.MoveToChild("bookstore", "");
navigator.MoveToChild("book", "");
XmlWriter book = XmlWriter.Create("book.xml");
navigator.WriteSubtree(book);
book.Close();
In dem Beispiel wird die bereits erwähnte Datei books.xml als Eingabe verwendet.
Siehe auch
Konzepte
Verarbeiten von XML-Daten mithilfe des XPath-Datenmodells
Navigieren in Knotengruppen mit "XPathNavigator"
Das Navigieren durch Attribut- und Namespaceknoten mit "XPathNavigator"
Zugreifen auf streng typisierte XML-Daten mit 'XPathNavigator'
Hinweis: