2009-06-22 12 views
7

puoi usare xpath per accedere a un elemento html?accedi all'elemento html usando xpath

Esso deve essere eseguito in explorer interenet, e scrivo in javascript

Sto cercando di ottenere il valore di una casella di input specifica in una riga specifica, ma io non voglio avere a scorrere tutte le cellule per ottenere quella giusta

Qualsiasi aiuto sarebbe apprezzato

Emma

risposta

4

Purtroppo non è possibile utilizzare XPath con un solo JavaScript e HTML, ma la maggior parte dei framework JavaScript avere selettori che si XPath simile danno funzionalità (ad es. jQuery)

modifica: ci sono apis xpath specifici del browser che è possibile utilizzare ma non è consigliabile utilizzarli senza astrazione.

1

In IE, query XPath sono fatte utilizzando:

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

xmlDoc.selectNodes(xpath); 

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

Tuttavia, questo funziona solo per XML. Per le query XPath su HTML, hai bisogno di una libreria di 3a parte come http://dev.abiss.gr/sarissa/

anche vedere Different results selecting HTML elements with XPath in Firefox and Internet Explorer per un precedente, discussione legati

+0

whenerv provo e uso xmlDoc = new ActiveXObject ("Msxml2.DOMDocument.3.0"); viene visualizzato un messaggio negato anche se ho revocato tutta la sicurezza posso qualche idea? –

1

Se l'HTML è XHTML-conforme quindi tecnicamente, dovrebbe essere possibile accedere agli elementi attraverso XPath . Ma in generale non sembra funzionare così bene. Soprattutto perché si vuole fare questo lato client, con qualsiasi libreria XPath installata sul computer client. Non molto utile e probabile fallire.

Tuttavia, con HTML è possibile specificare classi e nomi per identificare determinati elementi nella pagina e JavaScript ha un sacco di funzioni che possono invece utilizzare solo questi metodi. Vedi http://onlinetools.org/articles/unobtrusivejavascript/chapter2.html per un semplice esempio. Fondamentalmente, JavaScript ha il supporto nativo per il DOM HTML, ma non per il DOM XML.

13

È possibile utilizzare la seguente per accedere a un elemento con la XPATH noto

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

ad esempio per accedere un elemento con ID myID

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

Ho testato questo con firefox 3,6

+1

Questo è il modo W3C per farlo.Il codice per creare una query e attraversare i risultati è piuttosto prolisso, quindi molti sviluppatori usano un wrapper per questo. Se il tuo browser non ha XPathResult, XPathParser o document.evaluate(), puoi usare un'implementazione JS pura come http://mcc.id.au/xpathjs – joeytwiddle

+0

Purtroppo questo non funziona in nessuna versione di IE. –