2010-10-31 60 views
8

我正在用JavaScript(node.js)進行一些服務器端編碼,我想編寫有效的xml。用JavaScript編寫xml的庫

我發現了兩個庫,但我相信還有更多/更好的!?

要求:開源(用於商業用途)

會很酷,如果該項目是快速,小巧並且使用簡單(按此順序)。我想有一個有點低級別的訪問ALA

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

**選項1 **:文檔。寫('') **選項2 **:自己寫一個庫,你不會相信它有多容易。你需要的只是一個正確轉義HTML實體的函數(尖括號等)。只是不要使用命名空間,它們使庫和整個事情變得更加複雜。 (1)你會確切地知道圖書館正在做什麼,(2)你將有最簡單的圖書館專門爲你做這項工作。 – mojuba 2010-10-31 22:16:04

+0

但我無法想象,沒有一個單獨的lib已經這樣做了...正是這個問題:「尖括號等」:-) – Karussell 2010-10-31 22:29:15

+0

@Karussell :(請在開始時用@mojuba回覆,看起來像就像那時SO發給我一個通知)。幾乎所有這些圖書館都面臨的問題是,它們比你通常需要的要多得多。至於HTML轉義,這裏是如何做到這一點:function html(s){return s.split(「&」)。join(「&」).split(「<」)。join(「<」).split (「>」)。join(「>」)}(對不起,格式化在這裏不可用) – mojuba 2010-10-31 22:40:56

回答

2

我最近發佈了node-genx,它是一個名爲Genx的小型C庫的包裝,它提供了node.js中快速且有效的xml生成。

安裝很簡單:

npm install genx 

我已經發布了一些examples of using it產生在我的博客一個Atom feed和Sphinx xmlpipe2流。

+0

感謝您的更新 – Karussell 2011-02-08 21:58:46

1

我發現林依晨Flesler的XMLWriter的構造函數是一個良好的開端從頭開始(在內存中)創建XML,看看這個

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

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

結果

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

一些注意事項,它不會轉義字符串,並且語法可能會變得很糟糕。您可以從作者的網站或 https://github.com/alexandern/XMLWriter下載(包括逃逸和獨立屬性錯誤修復)

+0

如何將輸出寫入文件? – KamalSalem 2012-03-13 23:55:28

+0

@KamalSalem。我假設你指的是一個Web瀏覽器寫入用戶的本地磁盤,如果這是不可能的。 – 2012-03-14 18:18:04

+0

@AlexanderN您可以使用Data URI方案在瀏覽器中生成文件 – Theozaurus 2012-04-16 14:48:25

1

我創建兩個功能如下:

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

而且,要將XML寫入本地文件,請調用以下函數。

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

我希望這可以幫助,否則,你可以嘗試Ariel Flesler's XMLWriter在內存中創建XML。