gpt4 book ai didi

java - importNode 抛出 org.w3c.dom.DOMException : NOT_SUPPORTED_ERR

转载 作者:太空宇宙 更新时间:2023-11-04 07:20:53 26 4
gpt4 key购买 nike

我正在尝试使用标准 Oracle JDK 7 和 Saxon HE 合并两个 XML 文档,但我不断收到:

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

在下面的 importNode 行上(顺便说一句,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)

谷歌搜索后我看到old messages大意是,Saxon 显然创建了一个只读 DOM,这很奇怪,因为我认为 DOM 与 SAX 的比较点之一是 DOM 是读写的,而 SAX 是只读的。

最佳答案

要使用 Saxon 合并两个文档(我不确定你的意思,但我猜),你不想摆弄 DOM。只需运行此 XQuery:

<doc>{doc('a.xml'), doc('b.xml')}</doc>

关于java - importNode 抛出 org.w3c.dom.DOMException : NOT_SUPPORTED_ERR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19336920/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com