如何parsingXML在JavaScript Nashorn引擎?

我试图在服务器端运行JavaScript(与Nashorn),并在JavaScript代码,parsing一个XML文件。 我们不能默认这样做:我们需要加载一些特定的.js库(DOMParser等)。

我尝试过使用Node.js模块'XMLDOM',它可以不使用Node.js,如下所示: https : //github.com/jindw/xmldom/wiki/How-to-use-xmldom-in-non -node.js的JavaScript的平台样的Rhino或-的SpiderMonkey

但是这个页面带来了一个新的问题:我们需要将这些.js文件的负载封装在对象中,他们给了我们一个例子:

var dpObj = {}; loadObject ( dpObj, "dom-parser.js" ); 

(如果我们只是以一种经典的方式加载.js文件,它不起作用)

我不知道如何编写这样的'loadObject'函数,但它可能是解决scheme。 也许我们也可以使用Nashorn内的'require'库? 也许有一个很好的替代XMLDOM模块?

有什么build议么 ?

PS 1:我尝试了'env.rhino.1.2.js'( http://www.envjs.com )作为XMLDOM模块交替,但是这个脚本甚至不能被Nashorn加载…

PS 2:我也尝试parsingJava中的XML,并使用JavaScript内的结果,但我不知道如何转换对象(我有一个org.w3c.dom.Document对象插入,但这是不一样的作为JavaScript的DOM文件…我有例如gesDescendant方法丢失或类似的东西)。

Nashorn支持load和loadWithNewGlobal原语。

'load'将一个脚本从一个URL加载到当前的全局作用域中。

'loadWithNewGlobal'将给定的脚本加载到一个新的全局范围中。 这将避免使用加载的脚本文件/ URL的全局定义来污染当前的全局范围。

关于这些的更多信息在“openjdk nashorn extensions”维基上。

(无关)您可以使用Java XMLparsing器API实际parsingXML文档,因为nashorn支持从脚本代码调用任意Java API。 您可以使用Object.bindProperties(nashorn wiki中logging的另一个扩展)