Pregunta

Estoy intentando obtener el contenido de un elemento de documento XML, pero el elemento tiene dos puntos en su nombre.

Esta línea funciona para todos los elementos, pero los que tienen dos puntos en el nombre:

$(this).find("geo:lat").text();

Supongo que el colon necesita escapar. ¿Cómo soluciono esto?

¿Fue útil?

Solución

Use una barra invertida, que a su vez debería evitarse para que JavaScript no la coma:

$(this).find("geo\\:lat").text();

Otros consejos

Eso no es solo un nombre de elemento ordinario. Ese es un nombre calificado, lo que significa que es un nombre que se refiere específicamente a un tipo de elemento dentro de un espacio de nombres. El nombre del tipo de elemento es 'lat' y el prefijo de espacio de nombres es 'geo'.

En este momento, jQuery no puede manejar los espacios de nombres muy bien, consulte bug 155 para obtener más información .

Ahora mismo, como solución alternativa, debería poder seleccionar estos elementos solo con el nombre local:

$(this).find("lat").text();

Si tiene que distinguir los tipos de elementos con el mismo nombre local, puede usar filter () :

var NS = "http://example.com/whatever-the-namespace-is-for-geo";
$(this).find("lat").filter(function() { return this.namespaceURI == NS; }).text();

Editar: mi error, tenía la impresión de que el parche ya había aterrizado. Use la sugerencia de Adam para el selector y filter () si también necesita el espacio para nombres:

var NS = "http://example.com/whatever-the-namespace-is-for-geo";
$(this).find("geo\\:lat").filter(function() { return this.namespaceURI == NS; }).text();

si tiene un problema de selector de jquery con Chrome o webkit que no lo selecciona, intente

$(this).find('[nodeName=geo:lat]').text();

de esta manera funciona en todos los navegadores

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top