code: public void characters(char ch[], int start, int length) throws org.xml.sax.SAXException
    {
      if(isOutsideDocElem()
         && org.apache.xml.utils.XMLCharacterRecognizer.isWhiteSpace(ch, start, length))
        return;  // avoid DOM006 Hierarchy request error
  
      if (m_inCData)
      {
        cdata(ch, start, length);
  
        return;
      }
  
      String s = new String(ch, start, length);
      Node childNode;
      childNode =  m_currentNode != null ? m_currentNode.getLastChild(): null;
      if( childNode != null && childNode.getNodeType() == Node.TEXT_NODE ){
         ((Text)childNode).appendData(s);
      }
      else{
         Text text = m_doc.createTextNode(s);
         append(text);
      }
    }
docs: Receive notification of character data.
  
  <p>The Parser will call this method to report each chunk of
  character data.  SAX parsers may return all contiguous character
  data in a single chunk, or they may split it into several
  chunks; however, all of the characters in any single event
  must come from the same external entity, so that the Locator
  provides useful information.</p>
  
  <p>The application must not attempt to read from the array
  outside of the specified range.</p>
  
  <p>Note that some parsers will report whitespace using the
  ignorableWhitespace() method rather than this one (validating
  parsers must do so).</p>
  
  @param ch The characters from the XML document.
  @param start The start position in the array.
  @param length The number of characters to read from the array.
  @see #ignorableWhitespace
  @see org.xml.sax.Locator