2016-03-12 23 views
0

我已經通過這篇文章http://goessner.net/download/prj/jsonxml/瞭解如何轉換,但由於某些原因,它不適用於我。如何將xml轉換爲nodejs應用上的json

我想與大家分享代碼:

function parseXml(xml) { 
    var dom = null; 
    if (window.DOMParser) { 
     try { 
     dom = (new DOMParser()).parseFromString(xml, "text/xml"); 
     } 
     catch (e) { dom = null; } 
    } 
    else if (window.ActiveXObject) { 
     try { 
     dom = new ActiveXObject('Microsoft.XMLDOM'); 
     dom.async = false; 
     if (!dom.loadXML(xml)) // parse error .. 

      window.alert(dom.parseError.reason + dom.parseError.srcText); 
     } 
     catch (e) { dom = null; } 
    } 
    else 
     alert("cannot parse xml string!"); 
    return dom; 
    } 

,這是試圖轉換到JSON樣本:

var xml = '<e name="value">text</e>', 
      dom = parseXml(xml), 
      json = xml2json(dom); 

我得到一個錯誤說「沒有定義窗口」。好吧,當然,我沒有初始化窗口,我只是不知道該怎麼處理它,因爲我在nodejs應用程序中。

,你可以從文章看,因爲它是太長,在這裏發表xml2json ...

任何建議,將不勝感激....

回答

0

你的問題是,你所訪問的window獲取DOMParser或Microsoft.XMLDom ActiveX對象的對象。此代碼旨在用於瀏覽器,需要符合不同瀏覽器類型等所有問題。

因爲您在nodejs,您可以大大簡化此操作。首先,您需要能夠將XML解析爲類似於對象的東西。有幾個 - 我沒有用過,但一個快速谷歌發現xmldom。在那裏還有其他人,所以請仔細觀察一下,看看你覺得適合你和你的項目。

一旦你已經得到了安裝到您的項目,如下所示(未經測試)代碼應工作:

function parseXml(xml) { 
    var DOMParser = require('xmldom').DOMParser; 
    try { 
    return new DOMParser().parseFromString(xml, "text/xml"); 
    } 
    catch (e) { 
    return null; 
    } 
} 

這會給一個DOMParsed當量,可以再通過json2xml讀取。