Java SAXParser - держать InputStream открытым

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

Спасибо.

2 ответа

Решение

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

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);
Другие вопросы по тегам