Java如何在同一方法中使用XMLStreamReader和XMLStreamWriter

问题描述

我使用XMLStreamReader读取xml文件。我想复制此实际文件并在此文件添加一些节点:

XMLInputFactory factory = XMLInputFactory.newInstance();
    
    try {
        XMLStreamReader dataxML = factory.createXMLStreamReader(new FileReader(path));
        XMLStreamWriter dataWXML = (XMLStreamWriter) factory.createXMLStreamReader(new FileReader(path));
        
        while (dataxML.hasNext())
        {
            int type = dataxML.next();
            switch(type)
            {
                case XMLStreamReader.START_ELEMENT:
                    
                     dataWXML.writeStartElement("apple");
                        
                    break;
            }

        }

当我尝试运行时,出现此错误Exception in thread "main" java.lang.classCastException: class com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl cannot be cast to class javax.xml.stream.XMLStreamWriter

做到这一点的最佳方法是什么?

解决方法

使用XMLOutputFacotry来创建输出流

XMLInputFactory factory = XMLInputFactory.newInstance();
XMLOutputFactory outFactory = XMLOutputFactory.newInstance();
try {
    XMLStreamReader dataXML = factory.createXMLStreamReader(new FileReader(path));
    XMLStreamWriter dataWXML = factory.createXMLStreamWriter(new FileReader(otherPath));
    ...
}
    
       

请注意输出文件使用其他路径

,

此行是您的问题:

    XMLStreamWriter dataWXML = (XMLStreamWriter) factory.createXMLStreamReader(new FileReader(path));

您根本无法将XMLStreamReader强制转换为XMLStreamWriter。它们是单独的类,XMLStreamWriter并非从XMLStreamReader扩展而来。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...