Was ist der beste Weg, um einen DOM-Knoten eindeutig zu identifizieren?

8

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:

  • Skript X wählt nach dem Zufallsprinzip einen DOM-Knoten aus document.html aus.
  • Script X muss Skript Y mitteilen, welchen DOM-Knoten es ausgewählt hat.
  • Wie identifiziert Skript X den von ihm ausgewählten DOM-Knoten eindeutig, so dass das Skript Y genau weiß, um welchen Knoten es sich in document.html handelt?

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.

    
Olivier Lalonde 15.01.2010, 12:09
quelle

4 Antworten

6

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

    
Brian Agnew 15.01.2010, 12:16
quelle
1

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:

%Vor%

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.

    
Adrian Mouat 06.01.2012 12:18
quelle
0

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"?

    
lutz 15.01.2010 12:12
quelle
0

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.

    
bmargulies 15.01.2010 12:17
quelle

Tags und Links