2010-10-31 15 views
8

Sto facendo un po 'di codifica lato server con JavaScript (node.js) e vorrei scrivere xml valido.Librerie per scrivere xml con JavaScript

Ho trovato due librerie, ma sono sicuro che ci sono più/meglio !?

Requisiti: open source (per usi commerciali)

sarebbe bello se il progetto è veloce, piccolo e semplice da usare (in quest'ordine). E vorrei avere accesso a livello un po 'inferiore ala

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

** Opzione 1 **: documento.scrivi ('') ** Opzione 2 **: scrivi tu stesso una biblioteca, non crederesti quanto sia facile. Tutto ciò di cui avresti bisogno sarebbe una funzione che sfugge correttamente alle entità HTML (parentesi angolari ecc.). Basta non usare gli spazi dei nomi, rendono sia la libreria che l'intera cosa molto più complicate. La cosa buona di questo sarebbe (1) che tu sapresti esattamente cosa sta facendo la libreria e (2) avrai la libreria più semplice possibile che fa il lavoro specifico per te. – mojuba

+0

Ma non riesco a immaginare che non ci sia una sola lib che lo faccia già ... esattamente questo è il problema: "parentesi angolari ecc" :-) – Karussell

+0

@Karussell: (per favore rispondi con @mojuba all'inizio, guarda come quando SO mi invia una notifica). Il problema con quasi tutte queste librerie è che fanno molto più del solito. Come per l'escape HTML, ecco come farlo: function html (s) {return s.split ("&"). Join ("&") .split ("<"). Join ("<") .split (">"). join (">")} (mi dispiace, la formattazione non è disponibile qui) – mojuba

risposta

2

Ho recentemente rilasciato node-genx, un wrapper attorno a una piccola libreria C denominata Genx che fornisce generazione xml veloce e valida in node.js.

L'installazione è semplice:

npm install genx 

ho postato qualche examples of using it per generare un feed Atom e un flusso Sphinx xmlpipe2 sul mio blog.

+0

grazie per l'aggiornamento – Karussell

1

ho trovato funzione di costruzione XMLWriter di Ariel Flesler per essere un buon inizio per la creazione di XML da zero (in memoria), dare un'occhiata a questo

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

Esempio

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()); 
} 

Risultato

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

Un paio di avvertimenti, non sfugge le stringhe e la sintassi può ottenere il coyote++ brutto. È possibile scaricarlo dal sito dell'autore o da https://github.com/alexandern/XMLWriter (include fuggire e bug fix per l'attributo standalone)

+0

come si scrive l'output in un file? – KamalSalem

+0

@KamalSalem. Presumo che tu ti stia riferendo a un browser web che scrive sul disco locale dell'utente, se così non è possibile. –

+0

@AlexanderN È possibile utilizzare lo schema URI dati per generare un file nel browser – Theozaurus

1

ho creato due funzioni come segue:

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; 
} 

E, per scrivere l'XML in un file locale, chiamare la seguente funzione.

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(); 
    } 

Spero che questo aiuti, oppure si può provare Ariel Flesler's XMLWriter per la creazione di XML in memoria.