【问题标题】:Java SAXParser - keep InputStream openJava SAXParser - 保持 InputStream 打开
【发布时间】:2011-12-01 12:50:21
【问题描述】:

我有一个BufferedInputStream,我想用SAXParser 解析XML,然后再次使用它(例如mark(int)reset())。但是,此流在 parse() 方法中关闭。是否有可能以某种方式告诉SAXParser 让它保持打开状态?最后的手段是用不可关闭的流包裹这个流。

谢谢。

【问题讨论】:

    标签: java stream sax


    【解决方案1】:

    怎么样:

    class WontCloseBufferedInputStream extends BufferedInputStream {
      public void close () {
        // Do nothing.
      }
    
      public void reallyClose() {
        super.close ();
      }
    }
    

    【讨论】:

    • 我很想知道您为什么将其视为最后的手段。它完全符合您的要求。
    • 因为它很难看。 IMO 库不应关闭 InputStream/Reader 中的传递。
    【解决方案2】:

    您可以将 InputSource 对象而不是 InputStream 对象传递给 SAXParser

    示例代码

    SAXParser parser = // saxpaser object
            InputSource isource = new InputSource();
            InputStream istream = //your inputstream
            isource.setByteStream(istream);
            parser.parse(isource, handler);
    

    【讨论】:

    • 解析器完成时InputSource 是否关闭?如果是这样,这无济于事。
    • 但是这篇文章并没有解决问题,也没有提示解决方案:o)
    猜你喜欢
    • 2012-11-23
    • 2012-08-22
    • 2013-09-21
    • 2013-04-19
    • 2014-10-29
    • 2014-01-06
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    相关资源
    最近更新 更多