用 Stax API Java 修改 xml 文件

modify xml file with Stax API Java

我是 XML 的新手,我尝试修改一个 xml 文件。 让我解释一下我想做什么。我有一个现有文件,其中写了几行,但我想保留它们并添加其他文件。

我的例子没有按我想要的方式工作。它删除所有内容,并写一个新的 XML.

我需要阅读什么才能知道如何做到这一点?

这是我的 java 代码:

public static void WriteFile(){
          try{
              XMLOutputFactory  xMLOutputFactory  = XMLOutputFactory.newFactory();
              XMLStreamWriter xMLStreamWriter = xMLOutputFactory.
                      createXMLStreamWriter(new FileOutputStream("src\data\orders.xml"));
              xMLStreamWriter.writeStartDocument("1.0");
              xMLStreamWriter.writeStartElement("products");
              xMLStreamWriter.writeStartElement("product");

              //set description
              xMLStreamWriter.writeStartElement("description");
              xMLStreamWriter.writeCharacters("Apple MacBook Air A 11.6 Mac OS X v10.7 Lion MacBook");
              xMLStreamWriter.writeEndElement();
               //end description

              //set price
              xMLStreamWriter.writeStartElement("price");
              xMLStreamWriter.writeAttribute("currency","USD");
              xMLStreamWriter.writeCharacters("999");
              xMLStreamWriter.writeEndElement();
              //end price

              xMLStreamWriter.writeEndElement();
              //end produtcs
              xMLStreamWriter.writeEndElement();
              //end produtc
              xMLStreamWriter.flush();
              xMLStreamWriter.close();
          }catch (Exception e){
              System.out.println(e.getMessage());
          }
      }

您的代码使用 XML Stream Writer 在文件位置写入一些数据。该文件存在并恰好包含 XML 的事实无关紧要,因为您的代码只会覆盖它。

你现在要做的是:

  1. 写新内容

您需要的是:

  1. 读取现有文件的内容
  2. 写旧内容
  3. 写新内容
  4. 保存文件

对于第 2、3 和 4 步,您可以使用新文件,然后覆盖旧文件。