在Java中,如何在内存中创建临时文件来解析xml?

时间:2011-02-23 19:19:18

标签: java file-io

我想读取XML响应,并在xml的内存中创建一个临时文件。 然后,我想在文件中读取是否存在某些元素。 完成此操作后,我想摆脱临时文件。 我熟悉从文件系统制作和读取文件,是否可以不从内存中的文件写入然后读取?

3 个答案:

答案 0 :(得分:4)

它真的需要是一个文件吗?通常情况下这是废弃的。

例如,如果您使用的是基于流的编写器或阅读器,则可以使用ByteArrayOutputStreamByteArrayInputStream并将您的流/编写器/阅读器包围起来。你很少需要自己模拟一个文件;如果你这样做,你可能不会在你的设计中尽可能地抽象。

ByteArrayOutputStream baos = new ByteArrayOutputStream();
Writer w = new OutputStreamWriter(baos);
w.write(...);
byte[] bytes = baos.toByteArray();

类似地,ByteBuffer可以包装文件,但也只包含内存中的字节数组。

似乎你甚至根本不需要它序列化,正如乔恩所说。

答案 1 :(得分:4)

你为什么要在内存中创建它作为“文件”呢?只需将其保留为XML表示形式(无论是使用JDOM,还是使用W3C DOM API等)。

格式中检查比在内存中作为“文件”要简单得多。毕竟,如果你有它的序列化形式,就像它出现在磁盘上一样,那么为了查询它,你基本上必须再次解析它!

答案 2 :(得分:0)

我认为您不需要创建临时文件来检查某些元素是否存在。大多数XML解析器允许您直接从某些输入流中读取。您只需将XML响应字符串转换为输入流,然后将其提供给某个XML解析器以执行检查: -

// converting string to input stream
InputStream is = new ByteArrayInputStream( myString.getBytes( charset ) );