2009-06-22 10 views
7

pouvez-vous utiliser xpath pour accéder à un élément html?accéder à l'élément html en utilisant xpath

Il doit fonctionner dans l'explorateur interenet, et je vous écris en javascript

Je suis en train d'obtenir la valeur d'une boîte d'entrée spécifique dans une ligne spécifique, mais je ne veux pas avoir à itérer toutes les cellules pour obtenir la bonne

Toute aide serait appréciée

Emma

Répondre

4

Malheureusement, vous ne pouvez pas utiliser XPath avec juste Javascript et HTML, mais la plupart des cadres ont Javascript sélecteurs qui vous donnent XPath comme fonctionnalité (par ex. jQuery)

edit: Il existe des xpath apis spécifiques au navigateur que vous pouvez utiliser mais je ne recommanderais pas de les utiliser sans abstraction.

1

Dans IE, les requêtes XPath sont effectuées à l'aide:

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

xmlDoc.selectNodes(xpath); 

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

Cependant, cela ne fonctionne que pour xml. Pour les requêtes XPath sur html, vous avez besoin d'une bibliothèque 3ème partie comme http://dev.abiss.gr/sarissa/

également voir Different results selecting HTML elements with XPath in Firefox and Internet Explorer pour une précédente, la discussion liée

+0

whenerv i essaie d'utiliser xmlDoc = new ActiveXObject ("Msxml2.DOMDocument.3.0"); je reçois un message refusé, même si j'ai levé toute la sécurité que je peux des idées? –

1

Si le HTML est XHTML-conforme alors techniquement, il devrait être possible d'accéder à des éléments par XPath . Mais en général cela ne semble pas fonctionner aussi bien. Surtout que vous voulez faire ce côté client, avec n'importe quelle bibliothèque XPath installée sur l'ordinateur client. Pas très utile et susceptible d'échouer. Cependant, avec HTML, vous pouvez spécifier des classes et des noms pour identifier certains éléments de votre page et JavaScript a beaucoup de fonctions qui peuvent simplement utiliser ces méthodes à la place. Voir http://onlinetools.org/articles/unobtrusivejavascript/chapter2.html pour un exemple simple. Fondamentalement, JavaScript a un support natif pour le DOM HTML, mais pas pour le DOM XML.

13

Vous pouvez utiliser ce qui suit pour accéder à un élément avec le XPATH connu

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

par exemple, pour accéder à un élément avec ID myID

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

J'ai testé cela avec Firefox 3.6

+1

C'est la manière du W3C de le faire.Le code pour créer une requête et parcourir les résultats est assez long, donc la plupart des développeurs utilisent un wrapper pour cela. Si votre navigateur n'a pas XPathResult, XPathParser ou document.evaluate(), vous pouvez utiliser une implémentation JS pure telle que http://mcc.id.au/xpathjs – joeytwiddle

+0

Malheureusement cela ne fonctionne dans aucune version d'IE. –

Questions connexes