当前位置: 首页 > 知识库问答 >
问题:

使用JDOM将数据附加到现有文件

侯池暝
2023-03-14

我正在使用下面的代码。然而,当我运行代码时,我想在同一个TXT文件中一个接一个地添加新的XML。这是否可以使用JDOM。请帮帮我。。

xmlOutput。输出(文档,新FileWriter(“c:\updated.txt”));是否需要修改?

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.JDOMException;
import org.jdom2.input.SAXBuilder;
import org.jdom2.output.Format;
import org.jdom2.output.XMLOutputter;

public class Replacer {
    public static void main(String[] args) {
          try {

            SAXBuilder builder = new SAXBuilder();
            File xmlFile = new File("c:\\file.xml");
            String temp = "1234567";

            Document doc = (Document) builder.build(xmlFile);
            Element rootNode = doc.getRootElement();

            System.out.println("Root Node is --> "+rootNode);

            Element ShipmentLines = rootNode.getChild("ShipmentLines");

            Element ShipmentLine = ShipmentLines.getChild("ShipmentLine");

            Element Containers = rootNode.getChild("Containers");

            Element Container = Containers.getChild("Container");


            ShipmentLine.getAttribute("OrderNo").setValue(temp);


            Container.getAttribute("ContainerScm").setValue(temp);

            XMLOutputter xmlOutput = new XMLOutputter();

            xmlOutput.setFormat(Format.getPrettyFormat());
            xmlOutput.output(doc, new FileWriter("c:\\updated.txt"));

          } catch (IOException io) {
            io.printStackTrace();
          } catch (JDOMException e) {
            e.printStackTrace();
          }
}
}

共有1个答案

潘涵煦
2023-03-14

JDOM不直接支持附加到现有文件,但它只需要少量的额外代码。只需将输出写入StringWriter,获取字符串,然后将字符串附加到现有文件。一种可能的实现方式:

XMLOutputter xmlOutput = new XMLOutputter();
xmlOutput.setFormat(Format.getPrettyFormat());
StringWriter out = new StringWriter();
xmlOutput.output(doc, out);
FileUtils.writeStringToFile(new File("c:\\updated.txt"), out.toString(), true);

我在这里使用commons io FileUtils类作弊。请参见使用Apache Commons I/O将数据附加到文件中

如果commons io对您的应用程序不可用或不实用,请编写自己的append string to file方法。

 类似资料:
  • 问题内容: 如我所见,java mongo驱动程序不提供从现有gridFS文件获取的功能 我必须直接创建或使用方法。 是否缺少Java驱动程序或gridfs的限制? 除了创建新文件/删除旧文件之外,您能否建议其他解决方法? 谢谢 问题答案: GridFS不是MongoDB的核心功能,而是存储带有随附元数据的二进制数据的约定。您应该能够以通常的方式修改集合中的任何文档,同时保持相应文档的完整性。主要

  • 问题内容: 我有这个.json文件: 这是我的PHP代码: 问题是,我不确定如何实现它。每次提交表单时,我都会在上面调用此代码,因此我需要ID递增,并且还要使用和保持有效的JSON结构,这可能吗? 问题答案:

  • 这比我找到的或者我自己能想到的其他答案要具体一点。 我的json文件完全包含 不多也不少。使用这种格式的json数据,我可以得到所需的确切结果。 我想做的是能够使用PHP向json文件追加更多内容。我见过: 我的问题是,我不明白如何在我的示例中使用这个示例,因为我的json数据没有为其单个数组使用键。我是否必须放弃并找到一种使用命名键来获得我想要的结果的方法,或者有没有一种方法可以让我的json数

  • 问题内容: 该阿帕奇共享的I /函数O覆盖以前的文本文件。我想将数据附加到我的文件中。有什么我可以使用Commons I / O的方法吗?我可以使用Java的normal来做到这一点,但我对使用Commons I / O的情况感到好奇。 问题答案: 它已在Apache IO的2.1版本中实现。要将字符串追加到文件,只需在函数中传递 true 作为附加参数即可: FileUtils.writeStr

  • 问题内容: 我正在尝试创建一个将条目添加到json文件的函数。最终,我想要一个看起来像 等。这就是我所拥有的: 这确实会创建一个条目,例如。但是,如果我再次使用此函数(使用不同的名称和网址),第一个函数将被覆盖。我需要怎么做才能将第二个(第三个…)条目附加到第一个? 编辑 :对此问题的第一个答案和评论已经指出了我在写块中未使用的明显事实。不过,我看不出该怎么做。例如,以下内容显然不会起作用: 问题

  • 问题内容: 我已经创建了两个XML文档,并且想将这两个文档合并到一个新的信封中。所以我有 和 我想做的是将两个节点合并到一个根节点中: 合并的文档 我尝试创建一个临时文档,并用文档的根节点替换子级: 我当时希望用两个文档的根元素替换两个空格,但我得到“ WRONG_DOCUMENT_ERR:一个节点在与创建它的文档不同的文档中使用”。我尝试采用和导入根节点,但是遇到相同的错误。 是否有一些简便的方