我想在服務器端(與Nashorn)運行JavaScript,並在javascript代碼中解析XML文件。 默認情況下我們不能這樣做:我們需要加載一些特定的.js庫(DOMParser等)。如何在JavaScript Nashorn引擎中解析XML?
我已經tryied使用Node.js的模塊「XMLDOM」,其未Node.js的使用如下所示:https://github.com/jindw/xmldom/wiki/How-to-use-xmldom-in-non-node.js-JavaScript-platforms-like-Rhino-or-SpiderMonkey
但是這個頁面帶來了新的問題:我們需要封裝的這些負載在對象中.js文件,他們給我們一個例子:
var dpObj = {};
loadObject (dpObj, "dom-parser.js");
(如果我們只加載在一個典型的方式.js文件,它不工作)
我不知道如何編寫代碼這樣的'loadObject'函數,但它可能是解決方案。也許我們也可以使用Nashorn內的'require'庫?也許有一個很好的替代XMLDOM模塊?
有什麼建議嗎?
PS 1:我已經tryied 'env.rhino.1.2.js'(http://www.envjs.com)爲XMLDOM模塊alternive但這個劇本甚至可以不被犀牛加載...
PS 2:我也tryied在Java中解析XML並使用JavaScript內的結果,但我不知道如何轉換對象(我有一個插入的org.w3c.dom.Document對象,但這不同於JavaScript dom文檔.. 。我有例如gesDescendant方法丟失或類似的東西)。
謝謝!不幸的是,dom-parser.js的簡單加載失敗(來自XMLDOM Node.js模塊): 'var dpObj = loadWithNewGlobal(「src/main/resources/js/xmldom/dom-parser.js」); print(「dpObj:」+ dpObj);' 將打印: dpObj:undefined,undefined,undefined,undefined,... 也許我應該嘗試你的第二個解決方案 – user2668735
你可以給一個例子,在JavaScript中的java +綁定?例如,你用一個arg(一個java Dom文件)輸入你的JS代碼,並且必須調用一個函數foo來取得一個「Javascript文檔」。 有關信息,這一切都是爲了Blockly:這個想法是在服務器端生成JS代碼。由於轉換函數只存在於JS中,所以我必須在Nashorn內部執行JS函數。 – user2668735