【问题标题】:modify xml file with Stax API Java使用 Stax API Java 修改 xml 文件
【发布时间】:2015-09-17 13:38:40
【问题描述】:

我是 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());
          }
      }

【问题讨论】:

    标签: java xml stax


    【解决方案1】:

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

    你现在要做的是:

    1. 编写新内容

    你需要的是:

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

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

    【讨论】:

    • 你能给我一个小例子吗?
    • 这是一个使用 DOM 的示例:stackoverflow.com/questions/6445828/… 我建议在 StAX 上使用这个,因为在现有文件中解析更简单。当然,你也可以使用 StAX,但它会稍微冗长一些。
    猜你喜欢
    • 2015-06-28
    • 1970-01-01
    • 2010-09-05
    • 1970-01-01
    • 2020-11-07
    • 2017-06-07
    • 1970-01-01
    • 1970-01-01
    • 2013-05-04
    相关资源
    最近更新 更多