2

標準の Oracle JDK 7 と Saxon HE の両方を使用して 2 つの XML ドキュメントをマージしようとしていますが、次のエラーが発生し続けます。

org.w3c.dom.DOMException: NOT_SUPPORTED_ERR: The implementation does not support the requested type of object or operation.`

以下の行で( BTWimportNodeでも同じことが起こります):adoptNode

import java.io.*;
import org.w3c.dom.*;
import javax.xml.parsers.*;

public class FooMain {

    private static Document slurp(String s) throws Exception {
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        return factory.newDocumentBuilder().parse(new ByteArrayInputStream(s.getBytes("UTF-8")));
    }

    public static void main(String args[]) throws Exception {
        Document doc  = slurp("<a></a>");
        Document doc2 = slurp("<b></b>");
        Node not_used = doc.importNode(doc2, true);
    }
}

クラスパスを使用するかどうかの両方を試しましたSaxon-HE-9.4.jarが、それでも同じエラーが発生します。

アップデート

受け取ったコメントに基づいて、試してみると:

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance("net.sf.saxon.dom.DocumentBuilderFactoryImpl", null);

私は代わりに得る:

java.lang.UnsupportedOperationException: The Saxon DOM implementation cannot be updated
  at net.sf.saxon.dom.NodeOverNodeInfo.disallowUpdate(NodeOverNodeInfo.java:719)
  at net.sf.saxon.dom.DocumentOverNodeInfo.importNode(DocumentOverNodeInfo.java:211)
  at FooMain.main(FooMain.java:16)

グーグルで調べた後、Saxonが読み取り専用DOMを作成しているように見えるという古いメッセージが表示されます.DOMとSAXの比較ポイントの1つは、DOMが読み書き可能であるのに対し、SAXは読み取り専用である.

4

1 に答える 1

1

Saxon を使用して 2 つのドキュメント (これが何を意味するのか正確にはわかりませんが、推測します) をマージするには、DOM をいじりたくないでしょう。次の XQuery を実行するだけです。

<doc>{doc('a.xml'), doc('b.xml')}</doc>
于 2013-10-13T22:28:56.467 に答える