public void characters(char[] ch, int offset, int length) throws SAXException {
    if (_size >= _textArray.length) {
      String[] newTextArray = new String[_textArray.length * 2];
      System.arraycopy(_textArray, 0, newTextArray, 0, _textArray.length);
      _textArray = newTextArray;
    }

    if (!_escaping) {
      if (_dontEscape == null) {
        _dontEscape = new BitArray(8);
      }

      if (_size >= _dontEscape.size()) _dontEscape.resize(_dontEscape.size() * 2);

      _dontEscape.setBit(_size);
    }

    _textArray[_size++] = new String(ch, offset, length);
  }
  public void characters(String str) throws SAXException {
    // Resize the text array if necessary
    if (_size >= _textArray.length) {
      String[] newTextArray = new String[_textArray.length * 2];
      System.arraycopy(_textArray, 0, newTextArray, 0, _textArray.length);
      _textArray = newTextArray;
    }

    // If the escape setting is false, set the corresponding bit in
    // the _dontEscape BitArray.
    if (!_escaping) {
      // The _dontEscape array is only created when needed.
      if (_dontEscape == null) {
        _dontEscape = new BitArray(8);
      }

      // Resize the _dontEscape array if necessary
      if (_size >= _dontEscape.size()) _dontEscape.resize(_dontEscape.size() * 2);

      _dontEscape.setBit(_size);
    }

    _textArray[_size++] = str;
  }