2009-06-22 24 views
7

Können Sie mit Xpath auf ein HTML-Element zugreifen?Zugriff auf HTML-Element mit XPath

Es muss in interenet Explorer laufen, und ich schreibe es in Javascript

Ich versuche, den Wert eines bestimmten Eingabefeld in einer bestimmten Zeile zu bekommen, aber ich will nicht zu durchlaufen haben, alle Zellen die richtige

Jede Hilfe dankbar zu bekommen

Emma mit nur Javascript und HTML, aber die meisten Javascript-Frameworks haben Selektoren, die Ihnen XPath-ähnliche

Antwort

4

Leider verwenden Sie können nicht XPath werden würde Funktionalität (z.B. jQuery)

bearbeiten: Es gibt Browser-spezifische Xpath Apis, die Sie verwenden könnten, aber ich würde nicht empfehlen, sie ohne Abstraktion zu verwenden.

1

In IE, XPath-Abfragen verwenden getan:

xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); 
xmlDoc.async=false; 
xmlDoc.load("books.xml"); 

xmlDoc.selectNodes(xpath); 

Siehe http://www.w3schools.com/XPath/xpath_examples.asp

jedoch funktioniert dies nur für xml. Für XPath-Abfragen auf html, benötigen Sie eine 3rd-Party-Bibliothek wie http://dev.abiss.gr/sarissa/

Auch Different results selecting HTML elements with XPath in Firefox and Internet Explorer für eine frühere, verwandte Diskussion

+0

whenerv ich versuche und xmlDoc = new ActiveXObject ("Msxml2.DOMDocument.3.0") verwenden; ich bekomme einen Zugriff verweigert Nachricht, obwohl ich alle Sicherheit aufgehoben habe kann ich irgendwelche Ideen? –

1

sehen, ob die HTML XHTML-konformer ist dann technisch sollte es möglich sein, Elemente durch XPath zugreifen . Aber im Allgemeinen scheint es nicht so gut zu funktionieren. Vor allem, weil Sie diese Clientseite mit jeder XPath-Bibliothek ausführen möchten, die auf dem Clientcomputer installiert ist. Nicht sehr nützlich und wahrscheinlich zum Scheitern verurteilt.

Mit HTML können Sie jedoch Klassen und Namen angeben, um bestimmte Elemente auf Ihrer Seite zu identifizieren, und JavaScript verfügt über viele Funktionen, die stattdessen nur diese Methoden verwenden können. Ein einfaches Beispiel finden Sie unter http://onlinetools.org/articles/unobtrusivejavascript/chapter2.html. Grundsätzlich unterstützt JavaScript native Unterstützung für das HTML-DOM, nicht jedoch für das XML-DOM.

13

Sie können mit den folgenden, um ein Element zuzugreifen mit den bekannten XPATH

document.evaluate ("X_PATH_EXPRESSION", Dokument, null, XPathResult.ANY_TYPE, null) .iterateNext()

zum Beispiel ein Element mit ID myID

document.evaluate zuzugreifen ("// * [@ id = 'myID']", Dokument, null, XPathResult.ANY_ TYPE, null) .iterateNext()

Ich habe dies mit Firefox getestet 3.6

+1

Dies ist der W3C-Weg, dies zu tun.Der Code zum Erstellen einer Abfrage und zum Durchlaufen der Ergebnisse ist ziemlich langatmig, weshalb die meisten Entwickler einen Wrapper dafür verwenden. Wenn Ihr Browser kein XPathResult, XPathParser oder document.evaluate() hat, können Sie eine reine JS-Implementierung wie http://mcc.id.au/xpathjs verwenden. – joeytwiddle

+0

Leider funktioniert das in keiner Version von IE. –