【发布时间】:2011-12-01 12:50:21
【问题描述】:
我有一个BufferedInputStream,我想用SAXParser 解析XML,然后再次使用它(例如mark(int) 和reset())。但是,此流在 parse() 方法中关闭。是否有可能以某种方式告诉SAXParser 让它保持打开状态?最后的手段是用不可关闭的流包裹这个流。
谢谢。
【问题讨论】:
我有一个BufferedInputStream,我想用SAXParser 解析XML,然后再次使用它(例如mark(int) 和reset())。但是,此流在 parse() 方法中关闭。是否有可能以某种方式告诉SAXParser 让它保持打开状态?最后的手段是用不可关闭的流包裹这个流。
谢谢。
【问题讨论】:
怎么样:
class WontCloseBufferedInputStream extends BufferedInputStream {
public void close () {
// Do nothing.
}
public void reallyClose() {
super.close ();
}
}
【讨论】:
您可以将 InputSource 对象而不是 InputStream 对象传递给 SAXParser
示例代码
SAXParser parser = // saxpaser object
InputSource isource = new InputSource();
InputStream istream = //your inputstream
isource.setByteStream(istream);
parser.parse(isource, handler);
【讨论】:
InputSource 是否关闭?如果是这样,这无济于事。