CirrusXML

Editor y Parse XML para Velneo V

Qué ?

CirrusXML es una biblioteca realmente simple sin dependencias de npm, Nodejs o navegador, es un parser, editor y xml to JSON converter.

Por qué ?

Manta_xml se desarrolló porque existen javascript engines mucho más simples que v8, SpiderMonkey o Chakra, los motores js más simples pueden 'entender' javascript pero no tenían acceso a bindings de C/C++, módulos de nodo o Npm para aprovechar las librerías existentes.

Cómo ?

Instalación

La librería agregará una variable global llamada CirrusXML que expone las funciones xml2JSON, xmlParser y XMLDocument.

Uso

Crear un nuevo documento XML.

CirrusXML básicamente utiliza una estructura de árbol de Nodos , por lo que para crear la representación interna de un documento XML, lo único que se debe hacer es instanciar un objeto XMLDocument con los atributos para el nodo raíz y luego agregar nuevos nodos a la estructura.

Ejemplo:

var XMLDocument = CirrusXML.XMLDocument,
    document    = new XMLDocument({nodeName: "body", attrs: {id: "main", class: "body"}}),
    node        = document.find({nodeName: "body"})[0],
    pNode       = new Node({nodeName: "p", attrs: {class: "bold"}, _text: "Hello world"});

node.addChild(pNode);

document.toXML(true);
/*
  <?xml version="1.0" encoding="UTF-8"?>
  <body id="main" class="body">
    <p class="bold">
      Hello World
    </p>
  </body>
*/

document.toJSON()
/*
  {
    "body":{
        "_attrs":{
          "id":"main",
          "class":"body"
        },
        "p":{
          "_attrs":{
              "class":"bold"
          },
          "_text": "Hello "World"
        }
    }
  }
*/

Parseando y Editando un documento XML.

Es posible parsear un documento XML, encontrar y editar algunos de sus nodos y luego obtener una cadena JSON o XML del documento en su estado actual.

Revisa el objeto Nodo para ver cómo cambiar los atributos, nodeName, texto o valores de CData para un nodo en particular.

Ejemplo de parseo y edición:

Convertir un XML a JSON.

La función xml2JSON tomará cualquier cadena xml e intentará parsearla y convertirla en un objeto JSON equivalente.

Búsquedas.

Para buscar en el documento xml hay un método 'find' que puede recibir un query object o una función callback para recorrer el árbol xml y encontrar nodos que coincidan con los parámetros.

Resultado de la consulta

En ambos casos, el resultado es el mismo, un Array con objetos que representan los nodos xml coincidentes, estos objetos pueden ser el objeto Node en sí mismo o un objeto JSON que representa el nodo como este:

El JSON que representa cada nodo siempre tendrá las atributos 'nodeName' y 'attrs' y tendrá las atributos '_text' o '_cdata' si el nodo actual envuelve alguna expresión de texto o cdata.

Si tu intención es editar los atributos de los nodos, el texto, el CData, agregar o quitar nodos secundarios, necesita acceso directo al objeto Node y por ello el método find por defecto retorna un Array de nodos.

Búsqueda por query object:

La búsqueda con un query object es bastante simple, al método find se le llama con parámetro que indica el atributo por el cual deseas buscar y un valor con el que puede coincidir, puede ser un valor estándar (cadena, int, bool, etc.) o un literal regex .

Sintaxis

Ejemplos :

Búsqueda con una función callback:

Si necesitas más control sobre la búsqueda o realizar algunas operaciones, puedes pasar un callback al método 'find' en lugar de un query object, el callback recibirá un objeto Node y debería devolver un valor booleano para indicar si el nodo es un es match en la búsqueda.

ejemplos :

El Objeto de Node

El Objeto de Node es un objeto simple que contiene sus propios datos, una referencia a su nodo paterno y una lista de nodos hijos; para crear un nuevo nodo, simplemente debe crearse una instancia del objeto Node con un JSON que serán sus atributos.

lista de métodos :

  • setAttr

  • getAttr

  • setText

  • getText

  • setCData

  • getCData

  • addChild

  • deleteChild

Ejemplos de uso :

Last updated

Was this helpful?