2012-07-27 81 views
5

我試圖使用jQuery parseXml在node.js中我怎樣才能讓在node.js中jQuery.parseXML工作

我收到此錯誤:

Error: Invalid XML: <?xml version="1.0"... 

但問題是在XML

的問題是在節點的jquery.js:

parseXML: function(data) { 
     if (typeof data !== "string" || !data) { 
      return null; 
     } 
     var xml, tmp; 
     try { 
      if (window.DOMParser) { // Standard 
       tmp = new DOMParser(); 
       xml = tmp.parseFromString(data , "text/xml"); 
      } else { // IE 
       xml = new ActiveXObject("Microsoft.XMLDOM"); 
       xml.async = "false"; 
       xml.loadXML(data); 
      } 
     } catch(e) { 
      xml = undefined; 
     } 
     if (!xml || !xml.documentElement || xml.getElementsByTagName("parsererror").length) { 
      jQuery.error("Invalid XML: " + data); 
     } 
     return xml; 
    }, 

簡單地說,在node.js中,沒有的DOMParser,並沒有的ActiveXObject(「Microsoft.XMLDOM」)

因爲我在窗口我的工作,我希望ActiveXObject的工作,但沒有,這不,的jQuery吞噬實際的錯誤不是無效的XML它是的ActiveXObject沒有定義:

ReferenceError: ActiveXObject is not defined 
at Module._compile (module.js:449:26) 
at Object.Module._extensions..js (module.js:467:10) 
at Module.load (module.js:356:32) 
at Function.Module._load (module.js:312:12) 
at Module.runMain (module.js:492:10) 
at process.startup.processNextTick.process._tickCallback (node.js:244: 

任何解決方法嗎?我如何讓jQuery.parseXML工作?

回答

6

我使用xmldom取得了巨大的成功。看一看。它似乎解析XML就像你期望$.parseXML。我也遇到了jquery解析器的問題,並在嘗試了一堆之後切換到了這個解析器。

1

這似乎是必須實施到nodejs的核心。我會建議使用一個專門用來解析XML的模塊。

https://github.com/Leonidas-from-XIV/node-xml2js

你需要jQuery.parseXML工作,等你想編寫代碼越境進入瀏覽器和服務器上運行?

你也許可以揭露node-xml2js在瀏覽器browserify

還有libxmljs這似乎是更多的XML喜歡比節點xml2js。

+0

我使用的是非常模塊(node-xml2js),它只是工作。 – 2015-05-04 23:43:30

5

如果你想繼續使用jQuery.parseXML而不必對你的代碼做任何改變(就像你想要能夠在Node.js中同時運行相同的javascript一樣),它很容易設置那個。 M. Laing’s answer中提到的xmldom模塊公開了DOMParser構造函數,jQuery可以使用它在瀏覽器中使用DOMParser的相同方式。以下是如何做到這一點:

首先,安裝XMLDOM:

npm install xmldom --save 

假設你已經擁有的jQuery的2.1.x或更大的Node.js工作(有關說明它的設定,請參閱this repository自述),現在你只需要求XMLDOM和暴露其DOMParser構造爲一個全球性的:

global.DOMParser = require('xmldom').DOMParser; 

jQuery的,現在將能夠成功parseXML

相關問題