将字符串解析为XML文档 jdom2

3
我有一个问题。我想将字符串转换为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);
    }
}

有什么想法吗?


1
try org.w3c.dom.Document - Fildor
2个回答

2
你在这里混合了两个库。最简单的解决方法是更改导入方式,从以下方式更改为:
import org.jdom2.Document;

to

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);  
   }
}

2
你在这里混合了两个库,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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接