Was ist eine Möglichkeit, alle DOM-Knoten in einem HTML-Dokument eindeutig zu identifizieren? Um zu veranschaulichen, was ich meine, hier ist ein (fiktives) Beispiel:
Ich bin wirklich daran interessiert, den DOM-Knoten eindeutig zu identifizieren, damit das Skript Y es identifizieren und manipulieren kann. Vorzugsweise sollte es auch mit Textknoten arbeiten. Ich habe vielleicht über XPath nachgedacht, aber ich bin mir nicht sicher, wie ich einen eindeutigen XPath zu irgendeinem gegebenen Knoten erzeugen kann.
Sie sollten in der Lage sein, einen eindeutigen XPath zu ermitteln, indem Sie vom Knoten zum Stammknoten rückwärts arbeiten und den Knoten, auf dem Sie sich befinden, und den nächsten Knoten verfolgen, sodass Sie etwa Folgendes erhalten:
%Vor% Das ist der 101. C
-Knoten unter dem zweiten B
-Knoten. Als solcher ist das ein eindeutiger Pfad und kann mit Bezug auf das Originaldokument kopiert werden
Sie können sich vielleicht XPathGen Ссылка
ansehen Es wird ein eindeutiger XPath der Form /node()[1]/node()[1]
für einen bestimmten DOM-Knoten erstellt. Es gibt jedoch einige Probleme mit XPath, nämlich nicht zusammengewachsene Textknoten und "Prolog" -Knoten, die mit XPath nicht eindeutig identifiziert werden können. Zum Beispiel, wenn Sie das folgende Dokument in DOM haben:
Fügen Sie einen Textknoten hinzu, der zu:
wird %Vor%Der XPath zu den Knoten b und c ist derselbe, aber Sie haben weiterhin separate DOM-Knoten (es sei denn, Sie rufen für das Dokument die Normalisierung auf). Wenn Sie mit dieser Situation umgehen müssen, müssen Sie Offsets und Längen für Textknoten speichern.
Nun, ein XPath-Ausdruck, der zu einem einzelnen Knoten führt, sollte eindeutig sein. Was meinst du mit "Wie erzeuge ich einen eindeutigen XPath für einen bestimmten Knoten"?
Ordentliche untergeordnete Positionen entlang XPath-Achsen. Knoten sind stark geordnet und sagen so:
Kind 1 von Kind 3 von Kind 4 von Kind 5.
sollte es tun.