java - 使用来自 java 的 javascript 的解析器 XML

标签 java javascript xml

为此使用 javax.script.*

基于

DOMParser is not part of JS but part of Mozilla browser which makes it available to script in the browser using XPConnect. An alternative would be to use built-in E4X.

E4X is implemented in Rhino (JavaScript engine written in Java).

尝试一下:

import java.io.IOException;
import java.util.Map;

import javax.script.Bindings;
import javax.script.ScriptContext;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;

public class heshCode {

    public static void main(String[] args) throws IOException {
        scripter();
    }

    public static void scripter() {
        try {

            String Jscript = "var map = {};" + "\n"+
                      "var x = new XML();" +
                      "var person = new XML('<person><name>Bob Smith</name><likes><os>Linux</os><browser>Firefox</browser><language>JavaScript</language><language>Python</language></likes></person>');" +
                      "map[1]=person.name;" +
                      "map[2]=person['name'];" +
                      "map[3]=person.likes.browser;" +
                      "map[4]=person['likes'].browser;";
            ScriptEngineManager manager = new ScriptEngineManager();
            ScriptEngine rhinoEngine = manager.getEngineByName("javascript");
            Bindings bindings = rhinoEngine
                    .getBindings(ScriptContext.ENGINE_SCOPE);
            rhinoEngine.eval(Jscript.toString());

            @SuppressWarnings("unchecked")
            Map<String, String> m = (Map<String, String>) bindings.get("map");
            for (Map.Entry<String, String> entry : m.entrySet()) {
                System.out.println(entry.getKey() + " = " + entry.getValue());
            }
        } catch (ScriptException e) {
            System.out.println(e.getMessage());
        }
    }
}

但是我得到了错误:

sun.org.mozilla.javascript.EcmaError: ReferenceError: "XML" is not defined. (<Unknown source>#2) in <Unknown source> at line number 2

有什么想法/建议吗?

最佳答案

脚本程序员指南明确指出它已排除 E4X(ECMAScript for XML)。在这个 http://docs.oracle.com/javase/6/docs/technotes/guides/scripting/programmer_guide/ 中查看.

我有一个类似的问题,我必须使用 java 脚本解析 XML 并获取输出。然后我使用了 Mozilla Rhino ( https://developer.mozilla.org/en-US/docs/Mozilla/Projects/Rhino )。

它很适合我的情况。

希望这对遇到类似问题的任何人有所帮助。

关于java - 使用来自 java 的 javascript 的解析器 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16058467/

相关文章:

java - 如何在swing中将面板保存为图像?

javascript - 用于显示和隐藏的 Javascript

java - 如何避免解析奇怪的字符

java - 如何在 Play Frame work 2.3.8 上安装 SecureSocial?

java - EhCache Hibernate 二级缓存 maxBytesLocalHeap 慢

javascript - 验证 end_date 是否晚于 start_date

java - 是否有将 Java POJO 转换为 JSON 和 XML 的库?

xml - 在 @INC 中找不到 XML/LibXML/Element.pm

java - 我从哪里开始进行文本模式识别 - 基于 Java

javascript - 如何从某个索引开始映射嵌套 json 并将其映射回该索引 1 值