Tengo una cadena variable que contiene XML bien formado y válido. Necesito usar el código JavaScript para analizar este feed.
¿Cómo puedo lograr esto usando el código JavaScript (compatible con el navegador)?
fuente
Tengo una cadena variable que contiene XML bien formado y válido. Necesito usar el código JavaScript para analizar este feed.
¿Cómo puedo lograr esto usando el código JavaScript (compatible con el navegador)?
Actualización: para obtener una respuesta más correcta, consulte la respuesta de Tim Down .
Internet Explorer y, por ejemplo, los navegadores basados en Mozilla exponen diferentes objetos para el análisis XML, por lo que es aconsejable utilizar un marco de JavaScript como jQuery para manejar las diferencias entre navegadores.
Un ejemplo realmente básico es:
var xml = "<music><album>Beethoven</album></music>";
var result = $(xml).find("album").text();
Nota: Como se señaló en los comentarios; jQuery realmente no realiza ningún análisis XML en absoluto, se basa en el método DOM innerHTML y lo analizará como lo haría con cualquier HTML, así que tenga cuidado al usar nombres de elementos HTML en su XML. Pero creo que funciona bastante bien para el 'análisis' XML simple, pero probablemente no se sugiera para el análisis XML intensivo o 'dinámico' en el que no se indique por adelantado qué XML se reducirá y esto prueba si todo se analiza como se esperaba.
innerHTML
propiedad de un elemento, que no es del todo confiable.jQuery()
] analiza HTML, no XML"Respuesta actualizada para 2017
Lo siguiente analizará una cadena XML en un documento XML en todos los principales navegadores. A menos que necesite soporte para IE <= 8 o algún navegador oscuro, puede usar la siguiente función:
Si necesita admitir IE <= 8, lo siguiente hará el trabajo:
Una vez que tengas un
Document
obtenido víaparseXml
, puede utilizar los métodos / propiedades transversales habituales de DOM, comochildNodes
ygetElementsByTagName()
para obtener los nodos que desee.Ejemplo de uso:
Si está utilizando jQuery, a partir de la versión 1.5 puede utilizar su
parseXML()
método incorporado , que es funcionalmente idéntico a la función anterior.fuente
$()
para el análisis XML . Lea los comentarios con más cuidado: simplemente no funciona en muchas situaciones.parseXML()
método de jQuery usa una cadena. Estoy un poco preocupado de cambiar la respuesta porque no tengo una manera fácil de probarlo en este momento.La mayoría de los ejemplos en la web (y algunos presentados anteriormente) muestran cómo cargar un XML desde un archivo de manera compatible con el navegador. Esto resulta fácil, excepto en el caso de Google Chrome que no admite el
document.implementation.createDocument()
método. Al usar Chrome, para cargar un archivo XML en un objeto XmlDocument, debe usar el objeto XmlHttp incorporado y luego cargar el archivo pasando su URI.En su caso, el escenario es diferente, porque desea cargar el XML desde una variable de cadena , no desde una URL. Sin embargo, para este requisito, Chrome supuestamente funciona igual que Mozilla (o eso he oído) y es compatible con el método parseFromString ().
Aquí hay una función que uso (es parte de la biblioteca de compatibilidad del navegador que estoy construyendo actualmente):
fuente
if(window.ActiveXObject){...}
var dp; try{ dp = new DOMParser() } catch(e) { }; if(dp) { // DOMParser supported } else { // alert('you need to consider upgrading your browser\nOr pay extra money so developer can support the old versions using browser sniffing (eww)') }
.Marknote es un agradable analizador XML JavaScript de navegador cruzado. Está orientado a objetos y tiene muchos ejemplos, además de que la API está documentada. Es bastante nuevo, pero hasta ahora ha funcionado bien en uno de mis proyectos. Una cosa que me gusta es que leerá XML directamente de cadenas o URL y también puede usarlo para convertir el XML en JSON.
Aquí hay un ejemplo de lo que puede hacer con Marknote:
fuente
Siempre he usado el siguiente enfoque que funciona en IE y Firefox.
XML de ejemplo:
JavaScript:
fuente
innerText
lugar degetAttribute()
Aparentemente, jQuery ahora proporciona jQuery.parseXML http://api.jquery.com/jQuery.parseXML/ a partir de la versión 1.5
jQuery.parseXML( data )
Devoluciones:XMLDocument
fuente
Por favor, eche un vistazo a XML DOM Parser ( W3Schools ). Es un tutorial sobre el análisis XML DOM. El analizador DOM real difiere de un navegador a otro, pero la API DOM está estandarizada y sigue siendo la misma (más o menos).
Alternativamente, use E4X si puede restringirse a Firefox. Es relativamente más fácil de usar y es parte de JavaScript desde la versión 1.6. Aquí hay una pequeña muestra de uso ...
fuente
Para obtener más información, consulte http://www.easycodingclub.com/xml-parser-in-javascript/javascript-tutorials/
fuente
Descargo de responsabilidad : he creado fast-xml-parser
He creado fast-xml-parser para analizar una cadena XML en un objeto JS / JSON u objeto transversal intermedio. Se espera que sea compatible en todos los navegadores (aunque probado solo en Chrome, Firefox e IE).
Uso
Nota : No usa el analizador DOM, sino que analiza la cadena usando RE y la convierte en objeto JS / JSON.
Pruébelo en línea , CDN
fuente
También puede usar la función jquery ($. ParseXML) para manipular la cadena xml
ejemplo javascript:
fuente