2

この用途にjavax.script.*

に基づく

DOMParser は JS の一部ではなく、XPConnect を使用してブラウザーでスクリプトを実行できるようにする Mozilla ブラウザーの一部です。別の方法は、組み込みの E4X を使用することです。

E4X は Rhino (Java で記述された JavaScript エンジン) に実装されています。

それを試してみてください:

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

アイデア/提案はありますか?

4

1 に答える 1

0

Scripting Programmer ガイドでは、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 ) を使用しました。

私の状況ではうまくいきました。

これが、同様の問題に遭遇した人に役立つことを願っています。

于 2014-08-12T01:14:07.607 に答える