Auswählen von XML-Daten mit 'XPathNavigator'
Die XPathNavigator-Klasse stellt eine Gruppe von Methoden bereit, mit denen eine Gruppe von Knoten in einem XPathDocument-Objekt oder einem XmlDocument-Objekt mithilfe eines XPath-Ausdrucks ausgewählt werden können. Sobald die Knoten ausgewählt sind, können die ausgewählten Knoten durchlaufen werden.
Auswahlmethoden von XPathNavigator
Die XPathNavigator-Klasse stellt eine Gruppe von Methoden bereit, mit denen eine Gruppe von Knoten in einem XPathDocument-Objekt oder einem XmlDocument-Objekt mithilfe eines XPath-Ausdrucks ausgewählt werden können. Die XPathNavigator-Klasse stellt außerdem eine Gruppe optimierter Methoden bereit, mit denen übergeordnete, direkt untergeordnete und indirekt untergeordnete Knoten schneller als bei Verwendung eines XPath-Ausdrucks ausgewählt werden können. Die ausgewählte Knotengruppe wird in einem XPathNodeIterator-Objekt oder (falls es sich um nur einen ausgewählten Knoten handelt) in einem XPathNavigator-Objekt zurückgegeben.
Auswählen von Knoten mithilfe von XPath-Ausdrücken
Verwenden Sie eine der folgenden Auswahlmethoden, um eine Gruppe von Knoten mithilfe eines XPath-Ausdrucks auszuwählen.
Bei einem Aufruf geben diese Methoden eine Knotengruppe zurück, die Sie mithilfe eines XPathNodeIterator-Objekts oder (falls es sich um nur einen ausgewählten Knoten handelt) eines XPathNavigator-Objekts frei durchsuchen können.
Das Navigieren mithilfe eines XPathNodeIterator-Objekts hat keine Auswirkungen auf die Position des XPathNavigator-Objekts, das zum Erstellen verwendet wurde. Das von der XPathNavigator-Methode zurückgegebene SelectSingleNode-Objekt wird auf dem einzelnen zurückgegebenen Knoten positioniert und hat keine Auswirkung auf die Position des XPathNavigator-Objekts, mit dem es erstellt wurde.
Im folgenden Beispiel wird das Erstellen eines XPathNavigator-Objekts aus einem XPathDocument-Objekts veranschaulicht. Außerdem werden die Verwendung der Select-Methode zum Auswählen der Knoten im XPathDocument-Objekt sowie die Verwendung des XPathNodeIterator-Objekts zum Durchlaufen der ausgewählten Knoten dargestellt.
Dim document As XPathDocument = New XPathDocument("books.xml")
Dim navigator As XPathNavigator = document.CreateNavigator()
Dim nodes As XPathNodeIterator = navigator.Select("/bookstore/book")
While nodes.MoveNext()
Console.WriteLine(nodes.Current.Name)
End While
XPathDocument document = new XPathDocument("books.xml");
XPathNavigator navigator = document.CreateNavigator();
XPathNodeIterator nodes = navigator.Select("/bookstore/book");
while(nodes.MoveNext())
{
Console.WriteLine(nodes.Current.Name);
}
In diesem Beispiel wird die Datei books.xml
als Eingabe verwendet.
<?xml version="1.0" encoding="utf-8" ?>
<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>
Optimierte Auswahlmethoden
Die Methoden SelectChildren, SelectAncestors und SelectDescendants der XPathNavigator-Klasse stellen XPath-Ausdrücke dar, mit denen normalerweise direkt untergeordnete sowie indirekt untergeordnete und übergeordnete Knoten abgerufen werden. Diese Methoden tragen zur Leistungsoptimierung bei und sind schneller als die entsprechenden XPath-Ausdrücke. Die Methoden SelectChildren, SelectAncestors und SelectDescendants wählen übergeordnete, direkt untergeordnete und indirekt untergeordnete Knoten auf der Grundlage eines XPathNodeType-Werts oder des lokalen Namens und des Namespace-URIs der auszuwählenden Knoten aus. Die ausgewählten übergeordneten, direkt untergeordneten und indirekt untergeordneten Knoten werden in einem XPathNodeIterator-Objekt zurückgegeben.