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
Ein XPathExpression-Objekt stellt eine kompilierte XPath-Abfrage dar, die entweder von der statischen Compile-Methode der XPathExpression-Klasse oder der Compile-Methode der XPathNavigator-Klasse zurückgegeben wurde.
Die XPathExpression-Klasse
Eine durch ein XPathExpression-Objekt dargestellte kompilierte XPath-Abfrage ist nützlich, wenn dieselbe XPath-Abfrage mehrmals verwendet wird.
Wenn z. B. die Select-Methode mehrmals ausgerufen wird, verwenden Sie die Compile-Methode der XPathExpression-Klasse oder die Compile-Methode der XPathNavigator-Klasse, um die XPath-Abfrage zu kompilieren und in einem XPathExpression-Objekt zur Wiederverwendung und Leistungssteigerung zwischenzuspeichern, anstatt jedes Mal eine Zeichenfolge zu verwenden, die die XPath-Abfrage darstellt.
Nach der Kompilierung kann das XPathExpression-Objekt je nach dem Typ, der von der XPath-Abfrage zurückgegeben wird, als Eingabe für die folgenden Methoden der XPathNavigator-Klasse verwendet werden:
In der folgenden Tabelle werden alle XPath-Rückgabetypen des W3C sowie ihre Entsprechungen in Microsoft .NET Framework beschrieben. Außerdem wird erläutert, welche Methoden das XPathExpression-Objekt auf der Basis des Rückgabetyps verwenden.
XPath-Rückgabetyp des W3C |
Entsprechender .NET Framework-Typ |
Beschreibung |
Methoden |
|---|---|---|---|
Node set |
Eine ungeordnete Auflistung von Knoten ohne Duplikate, die in der Reihenfolge der Dokumente erstellt wurde. |
||
Boolean |
Ein true-Wert oder ein false-Wert. |
Evaluate oder |
|
Number |
Eine Gleitkommazahl. |
||
String |
Eine Folge von UCS-Zeichen. |
Hinweis: |
|---|
Die Matches-Methode akzeptiert einen XPath-Ausdruck als Parameter. Die SelectSingleNode-Methode gibt ein XPathNavigator-Objekt zurück, nicht einen der XPath-Rückgabetypen des W3C. |
Die ReturnType-Eigenschaft
Nachdem eine XPath-Abfrage in ein XPathExpression-Objekt kompiliert wurde, können Sie mithilfe der ReturnType-Eigenschaft des XPathExpression-Objekts bestimmen, was die XPath-Abfrage zurückgibt.
Die ReturnType-Eigenschaft gibt einen der folgenden XPathResultType-Enumerationswerte zurück, die die XPath-Rückgabetypen des W3C darstellen:
Im folgenden Beispiel werden mithilfe des XPathExpression-Objekts eine Zahl und eine Knotengruppe aus der Datei books.xml zurückgegeben. Die ReturnType-Eigenschaft aller XPathExpression-Objekte sowie die Ergebnisse der Evaluate-Methode und der Select-Methode werden in die Konsole geschrieben.
Dim document As XPathDocument = New XPathDocument("books.xml")
Dim navigator As XPathNavigator = document.CreateNavigator()
' Returns a number.
Dim query1 As XPathExpression = navigator.Compile("bookstore/book/price/text()*10")
Console.WriteLine(query1.ReturnType)
Dim number As Double = CType(navigator.Evaluate(query1), Double)
Console.WriteLine(number)
' Returns a node set.
Dim query2 As XPathExpression = navigator.Compile("bookstore/book/price")
Console.WriteLine(query2.ReturnType)
Dim nodes As XPathNodeIterator = navigator.Select(query2)
nodes.MoveNext()
Console.WriteLine(nodes.Current.Value)
XPathDocument document = new XPathDocument("books.xml");
XPathNavigator navigator = document.CreateNavigator();
// Returns a number.
XPathExpression query1 = navigator.Compile("bookstore/book/price/text()*10");
Console.WriteLine(query1.ReturnType);
Double number = (Double)navigator.Evaluate(query1);
Console.WriteLine(number);
// Returns a node set.
XPathExpression query2 = navigator.Compile("bookstore/book/price");
Console.WriteLine(query2.ReturnType);
XPathNodeIterator nodes = navigator.Select(query2);
nodes.MoveNext();
Console.WriteLine(nodes.Current.Value);
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>
Leistungsfähigere XPath-Ausdrücke
Wenn Sie eine bessere Leistung erreichen möchten, verwenden Sie in Ihren Abfragen einen möglichst spezifischen XPath-Ausdruck. Wenn z. B. der book-Knoten ein untergeordneter Knoten des bookstore-Knotens ist, und der bookstore-Knoten ist das oberste Element in einem XML-Dokument, ist die Verwendung des XPath-Ausdrucks /bookstore/book schneller als die Verwendung von //book. Der XPath-Ausdruck //book durchsucht alle Knoten in der XML-Struktur nach übereinstimmenden Knoten.
Darüber hinaus kann die Verwendung der von der XPathNavigator-Klasse bereitgestellten Methoden zur Knotensatznavigation zur Leistungssteigerung der Auswahlmethoden führen, die von der XPathNavigator-Klasse für Fälle mit einfachen Auswahlkriterien bereitgestellt werden. Wenn Sie z. B. den ersten untergeordneten Knoten des aktuellen Knotens auswählen müssen, ist es schneller, die MoveToFirst-Methode zu verwenden, als den XPath-Ausdruck child::*[1] und die Select-Methode zu verwenden.
Weitere Informationen zu den Methoden der Knotensatznavigation der XPathNavigator-Klasse finden Sie unter Navigieren in Knotengruppen mit "XPathNavigator".
Siehe auch
Konzepte
Verarbeiten von XML-Daten mithilfe des XPath-Datenmodells
Auswählen von XML-Daten mit 'XPathNavigator'
Auswerten von XPath-Ausdrücken mit "XPathNavigator"
Vergleich von Knoten mit "XPathNavigator"
In XPath-Abfragen erkannte Knotentypen
Hinweis: