在java中在内存中创建xml文件的副本

时间:2015-05-18 06:55:47

标签: java

我需要使用java在内存中创建xml文件的副本,我需要在内存中编辑此文件而不影响原始文件。在内存中更改此xml后,我需要将其作为输入发送到函数。什么是合适的选择。请帮助我。

4 个答案:

答案 0 :(得分:1)

您可以使用java native api进行xml解析:

DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
File file = new File("xml_file_name");
Document doc = builder.parse(file);

然后在将文档发送到指定的函数之前编辑内存中的文档。

答案 1 :(得分:0)

做你写的:

  1. 阅读文件。
  2. 将其写入另一个文件。
  3. 编辑所谓的另一个文件。
  4. 将其传递给该功能。在这里你必须决定传递文件或路径是否更好。

答案 2 :(得分:0)

您正在寻找的是ByteArrayOutputStream。 http://docs.oracle.com/javase/7/docs/api/java/io/ByteArrayOutputStream.html

这将允许您将一个字节数组写入内存,大多数xml lib将接受OutputStream的实现。

答案 3 :(得分:0)

鉴于文件是XML,您应该考虑将其加载到文档对象模型(DOM)中:https://docs.oracle.com/javase/tutorial/jaxp/dom/readingXML.html

这将使您更容易修改它并将其作为有效的XML文档写回。

如果您在字节级别对其进行操作,我只建议将其加载为字节/字符。如果您正在进行某些字符编码转换(例如UTF-16 - > UTF-8)或删除非法'字符。

尝试解析和修改XML的代码如果涵盖所有有效的XML文件,通常会变得非常臃肿。

除非您是XML的域专家,否则请选择架子的解析器。它充满了很好的图书馆。

如果文件可能很大并且您的逻辑可以使用,我宁愿使用XML流模型,例如SAX:https://docs.oracle.com/javase/tutorial/jaxp/sax/parsing.html

然而,我得到的印象是你没有经验,非专家倾向于使用SAX的事件驱动解析模型。

首次尝试使用DOM。