我有问题。我想将字符串转换为xml文档。 但是这段代码是抛出异常:
线程“main”中的异常java.lang.ClassCastException:com.sun.org.apache.xerces.internal.dom.DeferredDocumentImpl无法强制转换为org.jdom2.Document 在ru.unicus.osp.Test.main(Test.java:17)
import java.io.StringReader;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.jdom2.Document;
import org.xml.sax.InputSource;
public class Test {
public static void main(String[] args) throws Exception {
DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder();
InputSource is = new InputSource();
is.setCharacterStream(new StringReader("<root><node1></node1></root>"));
Document doc = (Document) db.parse(is);
}
}
有什么想法吗?
答案 0 :(得分:2)
你在这里混合了两个库。最简单的方法是从以下位置更改导入:
import org.jdom2.Document;
到
import org.w3c.dom.Document;
因此代码应如下所示:
import java.io.StringReader;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.xml.sax.InputSource;
public class Test {
public static void main(String[] args) throws Exception {
DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder();
InputSource is = new InputSource();
is.setCharacterStream(new StringReader("<root><node1></node1></root>"));
Document doc = (Document) db.parse(is);
}
}
答案 1 :(得分:1)
您在这里混合了两个库,DOM和JDOM。
您的当前输出Document
似乎是一个JDOM文档,但是您正在尝试将w3 DOM Document实例转换为一个,并且您失败了。
如果您想将JDOM文档作为输出,那么您的代码应该是:
SAXBuilder builder = new SAXBuilder();
Document doc = builder.build(new StringReader("<root><node1></node1></root>"));
对于DOM文档输出,只需使用DOM文档(org.w3c.dom.Document
)而不是org.jdom2.Document