Pregunta

Estoy buscando una buena biblioteca de JavaScript para el análisis de datos XML.Debe ser mucho más fácil el uso de la incorporada en el Los analizadores XML DOM junto con el de los navegadores.

Tengo echado a perder un poco de trabajo con JSON y estoy buscando algo similar para XML.

¿Fue útil?

Solución

Yo uso jQuery para esto.Aquí es un buen ejemplo:

(EDICIÓN:Nota - el siguiente blog parece haber desaparecido.)

http://blog.reindel.com/2007/09/24/jquery-and-xml-revisited/

También hay un montón y un montón de buenos ejemplos en la jQuery documentación:

http://www.webmonkey.com/tutorial/Easy_XML_Consumption_using_jQuery?oldid=20032

EDITAR:Debido a el blog de mi primer ejemplo se va a ir, quería añadir otro ejemplo que muestra los aspectos básicos y ayuda con problemas de espacio de nombres:

http://www.zachleat.com/web/selecting-xml-with-javascript/

Otros consejos

Descargo de responsabilidad: Yo soy el autor si la abrir-fuente Jsonix la biblioteca que puede ser adecuado para la tarea.


Hace un par de años yo también estaba buscando un buen XML<->JSON análisis/de la serialización de la biblioteca de JavaScript.Necesitaba procesar los documentos XML conforme a bastante complejos de Esquemas XML.En Java, yo habitualmente uso JAXB para la tarea, así que estaba buscando algo similar:

Hay un JavaScript API for XML binding - analógico a JAXB para Java?

No he logrado encontrar una herramienta de entonces.

Así que escribí Jsonix que yo considero un JAXB analógico para JavaScript.

Usted puede encontrar Jsonix adecuado, si usted está interesado en las siguientes características:

  • XML<->JSON conversión se basa en un declaraive asignación de entre XML y JSON estructuras
  • Este la asignación de puede ser generados a partir de un Esquema XML o escrito a mano
  • Bidireccional - soporta el análisis de la serialización (o unmarshalling/referencias en otros términos).
  • Apoyo elementos, atributos y también considera los espacios de nombres se define en el documento XML.
  • Estrictamente de tipo.
  • Estrictamente estructurado.
  • El apoyo de casi todos los Esquema XML integrado en los tipos de (incluyendo tipos especiales como QName).
  • Obras en los navegadores así como Node.js, también compatible con RequireJS/AMD (también para amdefine en Node.js)
  • Ha extensa documentación.

Sin Embargo, Jsonix puede ser una exageración, si el XML es bastante simple, no tiene un Esquema XML o si usted no está interesado en estricto o estructuras.Verificación de sus requisitos.

Ejemplo

Pruébalo en JSFiddle.

Usted puede tomar un orden de compra esquema y generar una asignación mediante el siguiente comando:

java -jar node_modules/jsonix/lib/jsonix-schema-compiler-full.jar
  -d mappings -p PO purchaseorder.xsd

Usted obtendrá un PO.js archivo que describe las asignaciones entre XML y JavaScript estructuras.He aquí un fragmento de este archivo de mapeo para dar una idea:

var PO = {
    name: 'PO',
    typeInfos: [{
        localName: 'PurchaseOrderType',
        propertyInfos: [{
            name: 'shipTo',
            typeInfo: 'PO.USAddress'
        }, {
            name: 'billTo',
            typeInfo: 'PO.USAddress'
        }, {
            name: 'comment'
        }, {
            name: 'orderDate',
            typeInfo: 'Calendar',
            type: 'attribute'
        }, ...]
    }, {
        localName: 'USAddress',
        propertyInfos: [ ... ]
    }, ...],
    elementInfos: [{
        elementName: 'purchaseOrder',
        typeInfo: 'PO.PurchaseOrderType'
    }, ... ]
};

Teniendo este archivo de asignación se pueden analizar los XML:

// First we construct a Jsonix context - a factory for unmarshaller (parser)
// and marshaller (serializer)
var context = new Jsonix.Context([PO]);

// Then we create a unmarshaller
var unmarshaller = context.createUnmarshaller();

// Unmarshal an object from the XML retrieved from the URL
unmarshaller.unmarshalURL('po.xml',
    // This callback function will be provided
    // with the result of the unmarshalling
    function (unmarshalled) {
        // Alice Smith
        console.log(unmarshalled.value.shipTo.name);
        // Baby Monitor
        console.log(unmarshalled.value.items.item[1].productName);
    });

O serializar su objeto JavaScript XML:

// Create a marshaller
var marshaller = context.createMarshaller();

// Marshal a JavaScript Object as XML (DOM Document)
var doc = marshaller.marshalDocument({
    name: {
        localPart: "purchaseOrder"
    },
    value: {
        orderDate: { year: 1999, month: 10, day: 20 },
        shipTo: {
            country: "US",
            name: "Alice Smith",
            street: "123 Maple Street",
            city: "Mill Valley",
            state: "CA",
            zip: 90952
        },
        billTo: { /* ... */ },
        comment: 'Hurry, my lawn is going wild!',
        items: { /* ... */ }
    }
});

Puedes probarlo en JSFiddle para ver cómo funciona en la práctica.


Adicional exención de responsabilidad: esta respuesta es de alta votó a causa de la luego de la discusión en meta. Así que por favor ser consciente de la "meta-efecto". Un alto número de votos aquí no significa necesariamente que Jsonix es buena, aplicables o recomendados por la comunidad.No ser engañado por el alto número de votos.

Si el XML es un formato simple que usted puede mirar jQuery y el XML a JSON plugin o el xmlObjectifier.

Para una escalera de un analizador usted puede desear mirar en XML para <SCRIPT>.

Has probado XML para la secuencia de COMANDOS.Tengo que admitir, que nunca lo he usado personalmente, pero he oído/leído un par de cosas buenas sobre él.

Darle una oportunidad y tal vez compartir su experiencia aquí?

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