1. Web
  2. Web-APIs
  3. Dokument
  4. evaluate()

Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

Dokument: evaluate() Methode

Baseline Weitgehend verfügbar

Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit Juli 2015 browserübergreifend verfügbar.

Die evaluate() Methode der Document Schnittstelle wählt Elemente basierend auf dem XPath-Ausdruck aus, der in den Parametern angegeben ist.

XPath-Ausdrücke können sowohl auf HTML- als auch auf XML-Dokumenten ausgewertet werden.

Syntax

js
evaluate(xpathExpression, contextNode, namespaceResolver, resultType, result)

Parameter

xpathExpression

Ein String, der den xpath repräsentiert, der ausgewertet werden soll.

contextNode

Der Kontextknoten für die Abfrage. Es ist üblich, document als Kontextknoten zu übergeben.

namespaceResolver Optional

Eine Funktion, die mit allen Namensraum-Präfixen aufgerufen wird und einen String zurückgeben sollte, der den Namensraum-URI wiedergibt, der mit diesem Präfix assoziiert ist. Er wird verwendet, um Präfixe innerhalb des xpath selbst aufzulösen, damit sie mit dem Dokument abgestimmt werden können. Der Wert null ist üblich für HTML-Dokumente oder wenn keine Namensraum-Präfixe verwendet werden. Wenn der Parameter weggelassen wird, ist der Standardwert null.

resultType Optional

Ein Integer, der dem Typ von XPathResult entspricht, der zurückgegeben werden soll. Wird der Parameter weggelassen, ist der Standardwert ANY_TYPE (0). Die folgenden Werte sind möglich:

ANY_TYPE (0)

Jeder Typ, der sich natürlich aus dem gegebenen Ausdruck ergibt.

NUMBER_TYPE (1)

Ein Ergebnisset, das eine einzelne Zahl enthält. Nützlich beispielsweise in einem xpath-Ausdruck, der die count()-Funktion verwendet.

STRING_TYPE (2)

Ein Ergebnisset, das einen einzelnen String enthält.

BOOLEAN_TYPE (3)

Ein Ergebnisset, das einen einzelnen booleschen Wert enthält. Nützlich beispielsweise in einem xpath-Ausdruck, der die not()-Funktion verwendet.

UNORDERED_NODE_ITERATOR_TYPE (4)

Ein Ergebnisset, das alle Knoten enthält, die dem Ausdruck entsprechen. Die Knoten im Ergebnisset sind nicht unbedingt in der gleichen Reihenfolge, in der sie im Dokument erscheinen.

Hinweis: Ergebnisse dieses Typs enthalten Referenzen auf Knoten im Dokument. Das Ändern eines Knotens macht den Iterator ungültig. Nach Änderung eines Knotens führt der Versuch, durch die Ergebnisse zu iterieren, zu einem Fehler.

ORDERED_NODE_ITERATOR_TYPE (5)

Ein Ergebnisset, das alle Knoten enthält, die dem Ausdruck entsprechen. Die Knoten im Ergebnisset sind in der gleichen Reihenfolge, in der sie im Dokument erscheinen.

Hinweis: Ergebnisse dieses Typs enthalten Referenzen auf Knoten im Dokument. Das Ändern eines Knotens macht den Iterator ungültig. Nach Änderung eines Knotens führt der Versuch, durch die Ergebnisse zu iterieren, zu einem Fehler.

UNORDERED_NODE_SNAPSHOT_TYPE (6)

Ein Ergebnisset, das Schnappschüsse aller Knoten enthält, die dem Ausdruck entsprechen. Die Knoten im Ergebnisset sind nicht unbedingt in der Reihenfolge, in der sie im Dokument erscheinen.

Hinweis: Ergebnisse dieses Typs sind Schnappschüsse, die im Wesentlichen Listen von übereinstimmenden Knoten sind. Sie können Änderungen am Dokument vornehmen, indem Sie Schnappschuss-Knoten ändern. Das Ändern des Dokuments macht den Schnappschuss nicht ungültig; wenn jedoch das Dokument geändert wird, entspricht der Schnappschuss möglicherweise nicht dem aktuellen Zustand des Dokuments, da Knoten möglicherweise verschoben, geändert, hinzugefügt oder entfernt wurden.

ORDERED_NODE_SNAPSHOT_TYPE (7)

Ein Ergebnisset, das Schnappschüsse aller Knoten enthält, die dem Ausdruck entsprechen. Die Knoten im Ergebnisset sind in der gleichen Reihenfolge, in der sie im Dokument erscheinen.

Hinweis: Ergebnisse dieses Typs sind Schnappschüsse, die im Wesentlichen Listen von übereinstimmenden Knoten sind. Sie können Änderungen am Dokument vornehmen, indem Sie Schnappschuss-Knoten ändern. Das Ändern des Dokuments macht den Schnappschuss nicht ungültig; wenn jedoch das Dokument geändert wird, entspricht der Schnappschuss möglicherweise nicht dem aktuellen Zustand des Dokuments, da Knoten möglicherweise verschoben, geändert, hinzugefügt oder entfernt wurden.

ANY_UNORDERED_NODE_TYPE (8)

Ein Ergebnisset, das einen einzelnen Knoten enthält, der dem Ausdruck entspricht. Der Knoten ist nicht unbedingt der erste Knoten im Dokument, der dem Ausdruck entspricht.

FIRST_ORDERED_NODE_TYPE (9)

Ein Ergebnisset, das den ersten Knoten im Dokument enthält, der dem Ausdruck entspricht.

result Optional

Ein bestehender XPathResult, der für die Ergebnisse verwendet werden soll. Wenn auf null gesetzt oder weggelassen, wird die Methode ein neues XPathResult erstellen und zurückgeben.

Rückgabewert

Ein XPathResult, das auf die ausgewählten Knoten verweist. Wenn result null war, ist es ein neues Objekt, wenn nicht, ist es das gleiche Objekt, das als result Parameter übergeben wurde.

Beispiele

Alle H2-Überschriften durch XPath finden

js
const headings = document.evaluate(
 "/html/body//h2",
 document,
 null,
 XPathResult.ANY_TYPE,
 null,
);
/* Search the document for all h2 elements.
 * The result will likely be an unordered node iterator. */
let thisHeading = headings.iterateNext();
let alertText = "Level 2 headings in this document are:\n";
while (thisHeading) {
 alertText += `${thisHeading.textContent}\n`;
 thisHeading = headings.iterateNext();
}
alert(alertText); // Alerts the text of all h2 elements

In dem obigen Beispiel wird ein ausführlicherer xpath über übliche Abkürzungen wie //h2 bevorzugt. Im Allgemeinen bieten spezifischere xpath-Selektoren, wie im obigen Beispiel, in der Regel einen erheblichen Leistungszuwachs, insbesondere bei sehr großen Dokumenten. Dies liegt daran, dass die Auswertung der Abfrage keine Zeit mit dem Besuchen von unnötigen Knoten verschwendet. Die Verwendung von // ist im Allgemeinen langsam, da alle Knoten vom Wurzelknoten und allen Unterknoten besucht werden, um mögliche Übereinstimmungen zu finden.

Weitere Optimierungen können durch sorgfältige Verwendung des Kontextparameters erreicht werden. Zum Beispiel, wenn Sie wissen, dass der gesuchte Inhalt irgendwo innerhalb des Body-Tags ist, können Sie dies verwenden:

js
document.evaluate(".//h2", document.body, null, XPathResult.ANY_TYPE, null);

Beachten Sie, dass im obigen Beispiel document.body als Kontext anstelle von document verwendet wurde, sodass der xpath vom Body-Element aus startet. (In diesem Beispiel ist der "." wichtig, um anzuzeigen, dass die Abfrage vom Kontextknoten, document.body, starten soll. Wenn der "." weggelassen würde (wodurch //h2 verbleibt), würde die Abfrage vom Wurzelknoten (html) starten, was verschwenderischer wäre.)

Siehe Einführung in die Verwendung von XPath in JavaScript für weitere Informationen.

Element durch xml:id abrufen

Diese Funktion ersetzt Document.getElementById(), wenn Sie stattdessen nach xml:id suchen müssen.

js
function getElementByIdWrapper(xmlDoc, id) {
 return xmlDoc.evaluate(
 `//*[@xml:id="${id}"]`,
 xmlDoc,
 () => "http://www.w3.org/XML/1998/namespace",
 XPathResult.FIRST_ORDERED_NODE_TYPE,
 null,
 ).singleNodeValue;
}

Spezifikationen

Spezifikation
DOM
# dom-xpathevaluatorbase-evaluate

Browser-Kompatibilität

Siehe auch

Help improve MDN

Erfahren Sie, wie Sie beitragen können Diese Seite wurde automatisch aus dem Englischen übersetzt.

AltStyle によって変換されたページ (->オリジナル) /