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

Java如何在同一方法中使用XMLStreamReader和XMLStreamWriter,java,xml,stax,Java,Xml,Stax,我使用XMLStreamReader读取xml文件。我要复制此实际文件并在此文件中添加一些节点: XMLInputFactory factory = XMLInputFactory.newInstance(); try { XMLStreamReader dataXML = factory.createXMLStreamReader(new FileReader(path)); XMLStreamWriter dataWXML = (XMLStr

我使用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;
            }

        }
当我尝试运行时,我遇到了以下错误:
线程“main”java.lang.ClassCastException中的异常:class com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl无法转换为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扩展而来的

我也在使用
XMLStreamReader
,但面临一些问题。我已经将问题和示例代码发布在这里。如果你有机会,你能看看这个并提供你的建议吗?我也在使用
XMLStreamReader
,但面临一些问题。我已经将问题和示例代码发布在这里。如果你有机会,你能看看这个并提供你的建议吗?