我想读取XML响应,并在xml的内存中创建一个临时文件。 然后,我想在文件中读取是否存在某些元素。 完成此操作后,我想摆脱临时文件。 我熟悉从文件系统制作和读取文件,是否可以不从内存中的文件写入然后读取?
答案 0 :(得分:4)
它真的需要是一个文件吗?通常情况下这是废弃的。
例如,如果您使用的是基于流的编写器或阅读器,则可以使用ByteArrayOutputStream
和ByteArrayInputStream
并将您的流/编写器/阅读器包围起来。你很少需要自己模拟一个文件;如果你这样做,你可能不会在你的设计中尽可能地抽象。
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 ) );