2009-06-27 16 views
7

Estoy tratando de averiguar cómo procesar XML en script java Así que busqué en Google para ello. El problema es que no sé si los tutoriales que veo funcionarán solo en IE.cross-browser estándar Procesamiento Xml en Java Script

¿Cuál es la forma "estándar" de procesar datos Xml en el script java?

Edit: Gracias por todas sus respuestas. Quiero hacer otra pregunta entonces. ¿Hay algún tipo de biblioteca de terceros que me permita escribir de forma transparente código JS sin preocuparse por la funcionalidad de navegador cruzado

+1

para responder a su edición: Es posible que desee algo así como jQuery o prototipo - ambos son marcos destinados a reducir cruzada dolores de cabeza del navegador y proporcionar conjuntos de métodos/funciones de utilidad útiles –

+0

La edición en realidad debería haber sido una pregunta nueva, pero sí, jQuery tiene un método parseXML(). – mydoghasworms

Respuesta

1

utilice los tutoriales en w3schools.com. Indican cómo trabajar con una variedad de navegadores

p. (un fragmento)

try //Internet Explorer 
    { 
    xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); 
    xmlDoc.async="false"; 
    xmlDoc.loadXML(txt); 
    return xmlDoc; 
    } 
catch(e) 
    { 
    parser=new DOMParser(); 
    xmlDoc=parser.parseFromString(txt,"text/xml"); 
    return xmlDoc; 
    } 

Además, solo para responder a su pregunta directa. El es una forma estándar (en el fragmento anterior, está en el bloque catch), pero Internet Explorer no es compatible con la forma estándar ... por lo que está atrapado con algo como el anterior

+0

Esto solo funciona con los navegadores IE y Mozilla habilitados para ActiveX. –

0

Un enfoque fácil convertir el formato XML a JSON. (Google "xml to json" para obtener varias opciones). Si es posible, recomendaría convertir a JSON en el lado del servidor. Es más compacto que XML, lo que se traduce en tiempos de descarga más rápidos. También es mucho menos intensivo en el procesador para analizar, por lo que se ejecutará más rápido en el lado del cliente.

Tenga en cuenta que si trabaja con pequeñas cantidades de contenido XML, la diferencia será insignificante.

2

Otra opción es utilizar una biblioteca de terceros, como Google AjaXSLT, para abstraer el código específico del navegador. Esto significa que puede concentrarse en llamar a métodos DOM estándar, como se define en la especificación XML. El analizador de Google es el único con el que tengo experiencia personal, por lo que no estoy seguro de si es el mejor disponible. ¿Quizás otras personas puedan recomendar otros analizadores?

6

Tal vez deberías echarle un vistazo al sarissa. es una biblioteca de navegador cruzado que me parece muy útil y fácil de usar. Se le permite a

  • XML de carga de direcciones URL o cadenas,
  • realizar transformaciones XSLT,
  • aplica consultas XPath

Obras en los principales navegadores y está licenciado bajo GPL

1

La forma "estándar" de procesar XML en Javascript es usar una o más API estándar o ampliamente disponibles.Las API más ampliamente adoptado para que son:

  • objeto DOMParser, permite analizar una cadena XML en una estructura DOM
  • objeto XMLSerializer, serializa estructura del DOM a cadena XML
  • objeto XSLTProcessor, permite el procesamiento XSLT
  • objeto XMLHttpRequest, para enviar XML sobre el alambre

todos los objetos mencionados están disponibles en toda la moderna (que no son IE) navegadores web. Por suerte, IE también ha tenido implementaciones de estas funcionalidades desde siempre (bueno, desde IE5 más o menos), simplemente tenían diferentes API. Como los objetos mencionados anteriormente no están disponibles en IE, sería posible implementarlos, también lo hicieron los proyectos Ample SDK y Sarissa, probablemente también algunos otros.

Por ejemplo, mira cómo el código que permite multi-navegador DOMParser puede parecer:

if (!window.DOMParser) { 
    var cDOMParser = function(){}; 
    cDOMParser.prototype.baseURI = null; 
    cDOMParser.prototype.parseFromString = function(sXml, sMime) { 
     var oDocument = new ActiveXObject("Microsoft.XMLDOM"); 
     oDocument.async   = false; 
     oDocument.validateOnParse = false; 
     oDocument.loadXML(sXml); 

     return oDocument; 
    }; 
    window.DOMParser = cDOMParser; 
}; 
Cuestiones relacionadas