2009-06-22 29 views
7

puede usar xpath para acceder a un elemento html?acceder al elemento html usando xpath

Se debe ejecutar en el explorador intenert, y le escribo que en javascript

Estoy tratando de obtener el valor de un cuadro de entrada específico en una fila específica, pero no quiero tener que recorrer todas las células para conseguir la correcta

Cualquier ayuda se agradece

Emma

Respuesta

4

Lamentablemente no se puede utilizar XPath con sólo Javascript y HTML, pero la mayoría de los marcos de Javascript tener selectores que XPath dan funcionalidad (p. jQuery)

editar: Existen apliaciones xpath específicas del navegador que podría utilizar, pero yo no recomendaría usarlas sin abstracción.

1

En IE, consultas XPath se realizan usando:

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

xmlDoc.selectNodes(xpath); 

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

Sin embargo, esto sólo funciona para XML. Para consultas XPath en html, necesita una biblioteca de 3 ª parte como http://dev.abiss.gr/sarissa/

también ver Different results selecting HTML elements with XPath in Firefox and Internet Explorer para una discusión anterior, relacionado

+0

whenerv i tratar de utilizar xmlDoc = new ActiveXObject ("Msxml2.DOMDocument.3.0"); obtengo un mensaje de denegación de mensaje aunque he levantado toda la seguridad que puedo alguna idea? –

1

Si el HTML es XHTML-conformes a continuación, técnicamente, debería ser posible acceder a los elementos a través de XPath . Pero, en general, no parece funcionar tan bien. Especialmente porque quiere hacer este lado del cliente, con la biblioteca XPath que esté instalada en la máquina cliente. No es muy útil y es probable que falle.

Sin embargo, con HTML puede especificar clases y nombres para identificar ciertos elementos en su página y JavaScript tiene muchas funciones que pueden usar estos métodos. Vea http://onlinetools.org/articles/unobtrusivejavascript/chapter2.html para un ejemplo simple. Básicamente, JavaScript tiene soporte nativo para el HTML DOM, pero no para el XML DOM.

13

Usted puede usar lo siguiente para acceder a un elemento con el XPATH conocido

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

Por ejemplo, para acceder a un elemento con ID MyID

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

He probado esto con Firefox 3.6

+1

Esta es la manera de hacerlo del W3C.El código para crear una consulta y recorrer los resultados es bastante largo, por lo que la mayoría de los desarrolladores usan un contenedor para él. Si su navegador no tiene XPathResult, XPathParser o document.evaluate(), puede utilizar una implementación pura de JS como http://mcc.id.au/xpathjs – joeytwiddle

+0

Desafortunadamente, esto no funciona en ninguna versión de IE. –

Cuestiones relacionadas