Java SAXParser - держать InputStream открытым - PullRequest
3 голосов
/ 01 декабря 2011

У меня есть BufferedInputStream, из которого я хочу проанализировать XML с SAXParser, но затем использовать его снова (например, mark(int) & reset()). Однако этот поток закрыт в методе parse(). Можно ли как-то сказать SAXParser оставить его открытым? В крайнем случае, обернуть этот поток неоткрываемым потоком.

Спасибо.

Ответы [ 2 ]

7 голосов
/ 01 декабря 2011

Как насчет чего-то вроде:

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

  public void reallyClose() {
    super.close ();
  }
}
0 голосов
/ 01 декабря 2011

Вы можете передать объект InputSource вместо объекта InputStream в SAXParser

пример кода

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