2012-11-02 69 views
2

我需要通過NodeJS運行JavaScript代碼的幫助。到目前爲止,我有以下代碼;通過NodeJS運行Javascript代碼

txt="<bookstore><book>"; 
txt=txt+"<title>Everyday Italian</title>"; 
txt=txt+"<author>Giada De Laurentiis</author>"; 
txt=txt+"<year>2005</year>"; 
txt=txt+"</book></bookstore>"; 

parser=new DOMParser(); 
xmlDoc=parser.parseFromString(txt,"text/xml"); 
x=xmlDoc.getElementsByTagName("title")[0].childNodes[0]; 
x.nodeValue="Diffrent Title"; 

我把它當作test.js和我運行它在commant提示符

node test.js 

但它提供了以下錯誤:

ReferenceError: DOMParser is not defined 

,我做錯了什麼。任何人都可以幫忙嗎?

回答

2

NodeJS不在瀏覽器內運行,所以DOMParser不可用。但是,您可以使用jsdom。它由nodejs提供。和its available在節點包管理器中。

var jsdom = require("jsdom"); 
jsdom.env({ 
    html: txt, 
    scripts: ["http://code.jquery.com/jquery.js"], 
    done: function(errors, window) { 
     x = window.getElementsByTagName("title")[0].childNodes[0]; 
     x.nodeValue="Diffrent Title"; 
    } 
}); 
+0

感謝shiplu,但它給出了一個錯誤。D:\ Web \ Node \ node_modules \ jsdom \ lib \ jsdom.js:177 features = JSON.parse(JSON.stringify(window.document.implementation._fea ^ TypeError :無法在位於Object.exports處的exports.env.exports.jsdom.env.processHTML(D:\ Web \ Node \ node_modules \ jsdom \ lib \ jsdom.js:177:59)處讀取未定義的 的屬性「實施」 .env.exports.jsdom.env(d:\網絡\節點\ node_modules \ jsdom \ LIB \ jsdom.js:268:5) –

+0

你安裝jsdom通常通過其NPM'完成安裝jsdom' –

+0

是我安裝?我安裝沒有任何問題,我在Windows Vista中運行。 –

3

Node.js與瀏覽器分開運行,因此您不會獲得任何瀏覽器提供的功能。 DOMParser是瀏覽器提供的類,由於Node.js在服務器上運行,因此沒有瀏覽器提供它。如果你想與你的文檔進行通信,你將不得不使用另一種方法。

+0

有沒有什麼辦法可以將XML傳遞給nodeJS的js函數? –

+0

是啊@UdayanthaUdyWarnasuriya檢查我的答案。 –