java - 使用 OutputStreamWriter(StAX 解析器)将数据附加到 XML 文件

标签 java xml stax

我想使用 OutputStreamWriter 将数据附加到 XML 文件,但结果如下所示

<?xml version="1.0" encoding="utf-8"?>
<doc>
 <msg>
   <tag1>data1</tag1>
   ...
 </msg>
</doc>
<?xml version="1.0" encoding="utf-8"?>
<doc>
 <msg>
   <tag1>data2</tag1>
   ...
 </msg>
</doc>

如何获得正确的格式

<?xml version="1.0" encoding="utf-8"?>
<doc>
 <msg>
   <tag1>data1</tag1>
   ...
 </msg>
 <msg>
   <tag1>data2</tag1>
   ...
 </msg>
</doc>

我试过下面的代码

 XMLOutputFactory outputFactory = XMLOutputFactory.newInstance();
    File file = new File(outputFile);
    Writer fw = null;
    XMLStreamWriter w = null;

    try {
        if(!file.isFile()) {
            file.createNewFile();
        }
        fw = new OutputStreamWriter(new FileOutputStream(file, true), "UTF-8"); 
        w = outputFactory.createXMLStreamWriter(fw);
        w.writeStartDocument("utf-8", "1.0");
        w.writeStartElement("doc");

        createMessageElement(fingerPrint, w, data);//method to write data

        w.writeEndElement();
        w.writeEndDocument();

        w.flush();
        w.close();

        w.close();

        fw.flush();
        fw.close();

请给我建议。我是 StAX 的新手。

最佳答案

您的示例只是将新的 xml 文档附加到文件末尾。如果您想将数据附加到现有的 xml 文档,您必须读取源 xml,并将其写入另一个文件,根据需要插入新元素....参见 http://docs.oracle.com/javase/tutorial/jaxp/stax/example.html#bnbgq以使用 stax api 为例。

关于java - 使用 OutputStreamWriter(StAX 解析器)将数据附加到 XML 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35715970/

相关文章:

java - 用特殊字符替换 & 符号的正则表达式模式

java - XML 的 StAX 格式正确性检查

xml - 从 XML 模板生成 XML 文档

java - 无法使用 StAX 解析由 Apache Commons StringEscapeUtils.unescapeHtml 生成的字符

java - 使用 StAX 保留 XML 布局(属性顺序、换行符)进行小的更改(例如更改属性)

java - 何时使用抽象类或接口(interface)?

java - 方法的动态调度和访问级别

java - 使用 Spring 3.2 和 EHCache 缓存父类(super class)方法

php - PHP xmlwriter 文档中的换行符

java - 对 XML 文件的 HTTP 请求