2017-07-31 15 views
0

最近在運行我的代碼錯誤而創建一個文檔變量,在Java中的XML解析器

我使用這個代碼來創建文檔,文件我已經剛開錯誤


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:返回 爪哇:1個

BUILD FAILED(總時間: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或所有類都使用完全限定。最常用的類別可能是您選擇導入的類別,這將使您不必輸入最多的包名稱。

+0

它非常適合我,非常感謝你!但是我在創建元素時也遇到同樣的錯誤: '元素docElement =(元素)doc;' 我也在它前面使用了org.w3c.dom,但它沒有工作 –

+0

如果沒有衝突,請先嚐試使用'import org.w3c.dom.Element'。否則,在你的代碼中使用帶'Element'的FQDN。 –

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