java类强制转换异常
我在将XML文档类型转换为文档对象时遇到问题。。 这是一段代码java类强制转换异常,java,xml,Java,Xml,我在将XML文档类型转换为文档对象时遇到问题。。 这是一段代码 Document doc=null; doc = (Document) parser.parse(sourceFile); 对于第2行,它抛出java类强制转换异常 如果没有类型转换,则错误显示为 Type mismatch: cannot convert from org.w3c.dom.Document to javax.swing.text.Document 我现在如何正确地进行打字?有什么建议吗?问题是在非限定名称中存在
Document doc=null;
doc = (Document) parser.parse(sourceFile);
对于第2行,它抛出java类强制转换异常
如果没有类型转换,则错误显示为
Type mismatch: cannot convert from org.w3c.dom.Document to javax.swing.text.Document
我现在如何正确地进行打字?有什么建议吗?问题是在非限定名称中存在冲突 也就是说,由于您的
import
语句,非限定名称Document
引用javax.swing.text.Document
,但是您确实需要org.w3c.dom.Document
(这是解析器返回的类型)
您可以使用完全限定名来解决此问题:
org.w3c.dom.Document doc = (org.w3c.dom.Document) parser.parse(sourceFile);
或者,您也可以具体地导入特定的文档
,如下所示:
import javax.swing.text.*;
import org.w3c.dom.*;
import org.w3c.dom.Document;
//...
Document doc = (Document) parser.parse(sourceFile);
这称为单类型导入声明(),可用于“隐藏”其他声明。问题在于非限定名称中存在冲突 也就是说,由于您的
import
语句,非限定名称Document
引用javax.swing.text.Document
,但是您确实需要org.w3c.dom.Document
(这是解析器返回的类型)
您可以使用完全限定名来解决此问题:
org.w3c.dom.Document doc = (org.w3c.dom.Document) parser.parse(sourceFile);
或者,您也可以具体地导入特定的文档
,如下所示:
import javax.swing.text.*;
import org.w3c.dom.*;
import org.w3c.dom.Document;
//...
Document doc = (Document) parser.parse(sourceFile);
这称为单类型导入声明(),可用于“隐藏”其他声明。这两个接口具有相同的名称,但完全不相关。您不能在它们之间进行转换-这没有意义,因为它们代表完全不同的概念(好的,理论上,您可以有一个Swing组件来显示XML树并使用DOM文档作为其模型,但我认为这不是您所拥有的)
您可能想要做的是获取未解析的XML并调用您想要显示它的swing组件。这两个接口具有相同的名称,但完全不相关。您不能在它们之间进行转换-这没有意义,因为它们代表完全不同的概念(好的,理论上,您可以有一个Swing组件来显示XML树并使用DOM文档作为其模型,但我认为这不是您所拥有的)
您可能要做的是获取未解析的XML并调用您希望显示它的swing组件。您的应用程序是否为swing应用程序 您可能正在使用一个IDE,您可以自动让它在源文件中组织导入。IDE为
javax.swing.text.Document
添加了导入,而不是org.w3c.dom.Document
。这是我在使用EclipseIDE时经常遇到的问题
必须执行的操作:从源代码文件顶部删除这一行:
import javax.swing.text.Document;
替换为:
import org.w3c.dom.Document;
您的应用程序是否为Swing应用程序 您可能正在使用一个IDE,您可以自动让它在源文件中组织导入。IDE为
javax.swing.text.Document
添加了导入,而不是org.w3c.dom.Document
。这是我在使用EclipseIDE时经常遇到的问题
必须执行的操作:从源代码文件顶部删除这一行:
import javax.swing.text.Document;
替换为:
import org.w3c.dom.Document;
的确检查您的导入:)@shil:您能否限定您自己的陈述“您好,我在将XML文档类型转换为
文档
对象时遇到问题。”--您在这里谈论的是哪个文档
?因为如果它是javax.swing.text.Document
,那么不幸的是,不可以强制转换它。您必须通过库(而不是Java语言)进行更精细的转换。看Michael的答案。是的,是javax.swing.text.Document。。从micheal的回答我想不出我该怎么办。。您能详细说明一下吗?@shil:您想如何处理swing.Document
?你能再详细说明一下吗?也许可以根据你的意图编辑这个问题。检查您的导入:)@shil:您能否限定您自己的陈述“您好,我在将XML文档类型转换为文档
对象时遇到问题。”--您在这里谈论的是哪个文档
?因为如果它是javax.swing.text.Document
,那么不幸的是,不可以强制转换它。您必须通过库(而不是Java语言)进行更精细的转换。看Michael的答案。是的,是javax.swing.text.Document。。从micheal的回答我想不出我该怎么办。。您能详细说明一下吗?@shil:您想如何处理swing.Document
?你能再详细说明一下吗?也许可以根据你的意图编辑这个问题。+1,这就是OP的意图。你可能想从这里接手。+1,这就是OP的意图。Jesper:导入
并不是问题所在:OP实际上想以某种方式将w3c文档
转换为Swing文档。Ok。当然,这并不容易,因为org.w3c.dom.Document
和javax.swing.text.Document
是两件完全不同的事情,即使它们都被称为文档
。Jesper:导入
并不是问题所在:OP实际上希望以某种方式将w3c文档
转换为Swing文档。Ok。当然,这并不容易,因为org.w3c.dom.Document
和javax.swing.text.Document
是两个完全不同的东西,尽管它们都被称为Document
。