private Document parse(final String data) {
    if (docBuilder == null || data == null) {
      return null;
    }

    Document document = null;

    try {
      // we change the system ID to a valid URI so that Crimson won't
      // complain. Indeed, "log4j.dtd" alone is not a valid URI which
      // causes Crimson to barf. The Log4jEntityResolver only cares
      // about the "log4j.dtd" ending.

      /**
       * resetting the length of the StringBuffer is dangerous, particularly
       * on some JDK 1.4 impls, there's a known Bug that causes a memory leak
       */
      StringBuffer buf = new StringBuffer(1024);

      if (!data.startsWith("<?xml")) {
        buf.append(BEGIN_PART);
      }

      buf.append(data);

      if (!data.endsWith(END_PART)) {
        buf.append(END_PART);
      }

      InputSource inputSource =
        new InputSource(new StringReader(buf.toString()));
      document = docBuilder.parse(inputSource);
    } catch (Exception e) {
      e.printStackTrace();
    }

    return document;
  }
private Document parse ( final String data ) { if ( docBuilder == null || data == null ) { return null ; } Document document = null ; try { StringBuffer buf = new StringBuffer ( 1024 ) ; if ( ! data . startsWith ( "<?xml" ) ) { buf . append ( BEGIN_PART ) ; } buf . append ( data ) ; if ( ! data . endsWith ( END_PART ) ) { buf . append ( END_PART ) ; } InputSource inputSource = new InputSource ( new StringReader ( buf . toString ( ) ) ) ; document = docBuilder . parse ( inputSource ) ; } catch ( Exception e ) { e . printStackTrace ( ) ; } return document ; }
Converts the LoggingEvent data in XML string format into an actual
XML Document class instance.
@param data XML fragment
@return  dom document