2010-10-31 7 views
8

Estoy haciendo algo de codificación del lado del servidor con JavaScript (node.js) y me gustaría escribir xml válido.Bibliotecas para escribir xml con JavaScript

Encontré dos libs, pero estoy seguro de que hay más/mejor !?

Requisitos: código abierto (para el uso comercial)

estaría bien si el proyecto es rápido, pequeño y fácil de usar (en ese orden). Y me gustaría tener un poco más bajo nivel de acceso ala

doc.addElement('xy').addAttr('name', 'bob'); 
+0

** Opción 1 **: documento.write ('') ** Opción 2 **: escriba usted mismo una biblioteca, no creería lo fácil que es. Todo lo que necesitaría sería una función que escapa correctamente de las entidades HTML (corchetes angulares, etc.). Simplemente no use espacios de nombres, hacen que tanto la biblioteca como todo el conjunto sean mucho más complicados. Lo bueno de esto sería (1) que sabría exactamente lo que está haciendo la biblioteca y (2) tendrá la biblioteca más simple posible que hace el trabajo específicamente para usted. – mojuba

+0

Pero no me puedo imaginar que no haya una sola lib que ya lo haga ... exactamente ese es el problema: "paréntesis angulares, etc." :-) – Karussell

+0

@Karussell: (por favor responda con @mojuba al principio, mira así es cuando SO me envía una notificación). El problema con casi todas estas bibliotecas es que hacen mucho más de lo que usualmente necesitas. En cuanto a HTML escape, aquí es cómo hacerlo: función html (s) {return s.split ("&"). Join ("&") .split ("<"). Join ("<") .split (">"). join (">")} (lo siento, el formato no está disponible aquí) – mojuba

Respuesta

2

Recientemente lancé node-genx, un contenedor alrededor de una pequeña biblioteca C llamada Genx que proporciona una generación xml rápida y válida en node.js.

La instalación es simple:

npm install genx 

He publicado algunos examples of using it para generar un feed Atom y una corriente Sphinx xmlpipe2 en mi blog.

+0

gracias por la actualización – Karussell

1

que he encontrado función XMLWriter constructor de Ariel Flesler para ser un buen punto de partida para la creación de XML desde cero (en la memoria), echar un vistazo a este

http://flesler.blogspot.com/2008/03/xmlwriter-for-javascript.html

Ejemplo

function test(){  
    // XMLWriter will use DOMParser or Microsoft.XMLDOM 
    var v = new XMLWriter(); 
    v.writeStartDocument(true); 
    v.writeElementString('test','Hello World'); 
    v.writeAttributeString('foo','bar'); 
    v.writeEndDocument(); 
    console.log(v.flush()); 
} 

Resultado

<?xml version="1.0" encoding="ISO-8859-1" standalone="true" ?> 
<test foo="bar">Hello World</test> 

Un par de advertencias, no escapa de cadenas y la sintaxis puede obtener coyote++ feo. Puede descargarlo desde el sitio del autor o desde https://github.com/alexandern/XMLWriter (incluye escape y corrección de errores para el atributo independiente)

+0

¿cómo se escribe la salida en el archivo? – KamalSalem

+0

@KamalSalem. Supongo que se refiere a un navegador web que escribe en el disco local del usuario, si eso no es posible. –

+0

@AlexanderN Podría usar el esquema de URI de datos para generar un archivo en el navegador – Theozaurus

1

he creado dos funciones de la siguiente manera:

function loadXMLDoc(filename){ 
    if (window.XMLHttpRequest){ 
     xhttp=new XMLHttpRequest(); 
    } 
    else { 
    xhttp=new ActiveXObject("Microsoft.XMLHTTP"); // code for IE 5-6 
    } 
    xhttp.open("GET",filename,false); 
    xhttp.send(); 
    return xhttp.responseXML; 
} 

Y, para escribir el XML en un archivo local, llame a la siguiente función.

function writeXML() 
    { 
     var xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); 
     var fso = new ActiveXObject("Scripting.FileSystemObject"); 
     var FILENAME="D:/YourXMLName/xml"; 
     var file = fso.CreateTextFile(FILENAME, true); 
     file.WriteLine('<?xml version="1.0" encoding="utf-8"?>\n'); 
     file.WriteLine('<PersonInfo>\n'); 
     file.WriteLine('></Person>\n'); 
     } 
     file.WriteLine('</PersonInfo>\n'); 
     file.Close(); 
    } 

espero que esto ayude, o de lo contrario se puede intentar la creación Ariel Flesler's XMLWriter de XML en la memoria.

Cuestiones relacionadas