如何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的另一个扩展)