Java 如何使用DocumentBuilder解析BufferedInputStream而不关闭流?
我有一个Java 如何使用DocumentBuilder解析BufferedInputStream而不关闭流?,java,xml,dom,Java,Xml,Dom,我有一个BufferedInputStream,它表示和XML文件,但我不确定模式是什么。因此,我要做的是解析XML,探索DOM以确定它动态使用的XML格式/模式,然后reset()流,然后将流传递到相应的解析库 但是,DocumentBuilder似乎正在为我关闭BufferedInputStream。我如何防止这种情况?有没有API方法可以防止这种情况发生?这是我能想到的最好的方法: 我的'real'BufferedInputStream实现不会将close()命令传播到'real'Buff
BufferedInputStream
,它表示和XML文件,但我不确定模式是什么。因此,我要做的是解析XML,探索DOM以确定它动态使用的XML格式/模式,然后reset()
流,然后将流传递到相应的解析库
但是,
DocumentBuilder
似乎正在为我关闭BufferedInputStream
。我如何防止这种情况?有没有API方法可以防止这种情况发生?这是我能想到的最好的方法:
BufferedInputStream
实现不会将close()
命令传播到'real'BufferedInputStream
(但会传播所有其他方法)BufferedInputStream
传递给DocumentBuilder
李>
reset()
my'real'BufferedInputStream
close()
更好的答案是受欢迎的,因为我宁愿通过API而不是通过API来实现。我会用一个实现来装饰
BufferedInputStream
,该实现将读取的字节迭代存储到字节[]
。正常关闭小溪。然后调用getBytes()
并将带有这些字节的ByteArrayInputStream
传递给DocumentBuilder
。如果没有太多内存,但保存了两次对文件的读取,则会出现此问题。