我需要使用java在内存中创建xml文件的副本,我需要在内存中编辑此文件而不影响原始文件。在内存中更改此xml后,我需要将其作为输入发送到函数。什么是合适的选择。请帮助我。
答案 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)
做你写的:
答案 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。