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.
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 wird.
Die XPathExpression-Klasse
Eine kompilierte XPath-Abfrage, die durch ein XPathExpression Objekt dargestellt wird, ist nützlich, wenn dieselbe XPath-Abfrage mehrmals verwendet wird.
Verwenden Sie beispielsweise beim mehrfachen Aufrufen der Select Methode anstelle einer Zeichenfolge, die die XPath-Abfrage jedes Mal darstellt, die Compile Methode der XPathExpression Klasse oder die Compile Methode der XPathNavigator Klasse, um die XPath-Abfrage in einem XPathExpression Objekt zu kompilieren und zwischenzuspeichern, um die Leistung wiederzuverwenden und zu verbessern.
Nach der Kompilierung kann das XPathExpression Objekt je nach typ, der von der XPath-Abfrage zurückgegeben wird, als Eingabe für die folgenden XPathNavigator Klassenmethoden verwendet werden.
In der folgenden Tabelle werden die einzelnen W3C XPath-Rückgabetypen, ihre Microsoft .NET Framework-Äquivalenz und die Methoden beschrieben, mit denen das XPathExpression Objekt basierend auf seinem Rückgabetyp verwendet werden kann.
W3C XPath-Rückgabetyp | .NET Framework-Äquivalenttyp | BESCHREIBUNG | Methodik |
---|---|---|---|
Node set |
XPathNodeIterator | Eine ungeordnete Auflistung von Knoten ohne Duplikate, die in der Reihenfolge der Dokumente erstellt wurde. | Select oder Evaluate |
Boolean |
Boolean | Ein true - oder false -Wert. |
Evaluate oder Matches |
Number |
Double | Eine Gleitkommazahl. | Evaluate |
String |
String | Eine Abfolge von UCS-Zeichen. | Evaluate |
Hinweis
Die Matches Methode akzeptiert einen XPath-Ausdruck als Parameter. Die SelectSingleNode Methode gibt ein XPathNavigator Objekt zurück, nicht eines der W3C XPath-Rückgabetypen.
Die ReturnType-Eigenschaft
Nachdem eine XPath-Abfrage in ein XPathExpression Objekt kompiliert wurde, können Sie die ReturnType Eigenschaft des XPathExpression Objekts verwenden, um zu bestimmen, was die XPath-Abfrage zurückgibt.
Die ReturnType Eigenschaft gibt einen der folgenden XPathResultType Enumerationswerte zurück, die die Rückgabetypen von W3C XPath darstellen.
Im folgenden Beispiel wird das XPathExpression Objekt verwendet, um eine Zahl und einen Knoten aus der books.xml
Datei zurückzugeben. Die ReturnType Eigenschaft jedes XPathExpression Objekts sowie die Ergebnisse aus den Evaluate Und Select Methoden 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);
Im Beispiel wird die books.xml
Datei 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>
XPath-Ausdrücke mit höherer Leistung
Verwenden Sie für eine bessere Leistung den spezifischsten XPath-Ausdruck, den Sie in Ihren Abfragen verwenden können. Wenn der book
Knoten beispielsweise ein untergeordneter Knoten des bookstore
Knotens ist und der bookstore
Knoten das oberste Element in einem XML-Dokument ist, ist die Verwendung des XPath-Ausdrucks /bookstore/book
schneller als die Verwendung //book
. Der //book
XPath-Ausdruck scannt jeden Knoten in der XML-Struktur, um übereinstimmende Knoten zu identifizieren.
Darüber hinaus kann die Verwendung der von der XPathNavigator Klasse bereitgestellten Knotensatznavigationsmethoden zu einer verbesserten Leistung der auswahlmethoden führen, die von der XPathNavigator Klasse bereitgestellt werden, wenn Ihre Auswahlkriterien einfach sind. Wenn Sie beispielsweise das erste untergeordnete Element des aktuellen Knotens auswählen müssen, ist es schneller, die MoveToFirst Methode zu verwenden, als den child::*[1]
XPath-Ausdruck und die Select Methode zu verwenden.
Weitere Informationen zu den Knotensatznavigationsmethoden der XPathNavigator Klasse finden Sie unter Node Set Navigation Using XPathNavigator.
Siehe auch
- XmlDocument
- XPathDocument
- XPathNavigator
- Verarbeiten von XML-Daten mithilfe des XPath-Datenmodells
- Auswählen von XML-Daten mit XPathNavigator
- Auswerten von XPath-Ausdrücken mit XPathNavigator
- Abgleichen von Knoten mit XPathNavigator
- Knotentypen, die mit XPath-Abfragen erkannt werden
- XPath-Abfragen und Namespaces