如何将 XML Prolog 添加到现有 XML Java

How to add XML Prolog to existing XML Java

提问人:CatiaV5 提问时间:4/1/2022 最后编辑:CatiaV5 更新时间:4/1/2022 访问量:248

问:

我有一组XML文件,其中的序言已被删除。为了进一步处理文件,我现在需要以编程方式添加此 prolog。我当前的代码如下,但它确实编写了一个空的XML。谁能帮忙?

try(InputStream is = new FileInputStream(FILENAME + filename)){
                DocumentBuilder db = dbf.newDocumentBuilder();
                
                Document doc = db.parse(is);
                doc.appendChild(doc.createProcessingInstruction("xml", "version=\"1.0\" encoding=\"ISO-8859-1\""));
             
                //print XML
                TransformerFactory tf = TransformerFactory.newInstance();
                Transformer transformer = tf.newTransformer();
                DOMSource source = new DOMSource(doc);
                
                FileOutputStream output =
                new FileOutputStream("/Users/XXX/Documents/New/" + filename);
                StreamResult result = new StreamResult(new File(output+filename));
                transformer.transform(source, result);              
            }
Java DOM XML 解析

评论


答:

1赞 deadshot 4/1/2022 #1

您编写的代码很好,但是将更新的 xml 保存到您作为参数传递到的新文件中时出现了小错误new StreamResult(new File(output+filename))FileOutputStreamFile()

实际上,您不需要这样做就足够了new StreamResult(output)

完整代码:

FileOutputStream output = new FileOutputStream("/Users/XXX/Documents/New/" + filename)
StreamResult result = new StreamResult(output);
transformer.transform(source, result);

注意:

您的代码创建的 xml 文件在类路径中具有如下文件名java.io.FileOutputStream@3d82c5f3<filename>