使用Java中的XML解析器创建Document变量时出错

时间:2017-07-31 01:53:01

标签: java xml parsing dom netbeans

最近我在运行代码时遇到了错误

我正在使用此代码创建文档文件

DocumentBuilderFactory bFactory = DocumentBuilderFactory.newInstance();

DocumentBuilder dBuilder = bFactory.newDocumentBuilder();

Document doc = (Document) dBuilder.parse(xmlfile);

我收到此错误

  

线程中的异常" main" java.lang.ClassCastException:   com.sun.org.apache.xerces.internal.dom.DeferredDocumentImpl不能   转发到rss.RSS.main的javax.swing.text.Document(RSS.java:72)

     

C:\用户\用户\应用程序数据\本地\的NetBeans \缓存\ 8.2 \执行人-片段\ run.xml:53:   Java返回:1

     

BUILD FAILED(总时间:0秒)

我对编程不熟悉,但我有一项任务要做。如果你能提供帮助我会很高兴

2 个答案:

答案 0 :(得分:1)

以下行的导入似乎是javax.swing.text.Document

Document doc = (Document) dBuilder.parse(xmlfile);

一种可能的解释是您的源文件正在使用以下两个类:

javax.swing.text.Document
org.w3c.dom.Document

如果您尝试在同一源文件中同时执行Swing和XML dom,则此解释是有意义的。解决方法是在此处使用完全限定的类名,例如

org.w3c.dom.Document doc = (org.w3c.dom.Document) dBuilder.parse(xmlfile);

请注意,您可以使org.w3c.dom.Document成为主要导入,然后在任何地方使用javax.swing.text.Document作为Swing文档类。在实践中,您可能希望在任何地方保持一致,即对所有Swing或所有org.w3c.dom类使用完全限定。大多数类可能是您选择导入的类,这将使您无需输入最多的包名。

答案 1 :(得分:0)

看起来你要从错误的包中导入类而不是你需要的XML解析,请参考下面的代码从右包中导入类。

import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.DocumentBuilder;
import org.w3c.dom.Document;

DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = (Document) dBuilder.parse(xmlfile);