docs: public String getXML()
      {
          Object root = null;
          if (m_message != null)
              root = m_message.getRawData();
          if (root != null)
          {
              try {
                  ByteArrayOutputStream out = new ByteArrayOutputStream();
                  String packageName = (String)((TrxMessageHeader)this.getMessage().getMessageHeader()).get(SOAPMessageTransport.JIBX_PACKAGE_NAME);
                  String bindingName = (String)((TrxMessageHeader)this.getMessage().getMessageHeader()).get(SOAPMessageTransport.JIBX_BINDING_NAME);
                  if (packageName == null)
                  {
                  	packageName = root.getClass().getName();
                  	packageName = packageName.substring(0, packageName.lastIndexOf('.'));
                  	((TrxMessageHeader)this.getMessage().getMessageHeader()).put(SOAPMessageTransport.JIBX_PACKAGE_NAME, packageName);
                  }
      
                  IMarshallingContext m = JibxContexts.getJIBXContexts().getMarshaller(packageName, bindingName);
                  if (m == null)
                      return null;
                  synchronized(m)
                  {   // Since the marshaller is shared (may want to tweek this for multi-cpu implementations)
                  	m.marshalDocument(root, DBConstants.URL_ENCODING, null, out);
                  }
                  String strXML = out.toString(Constants.STRING_ENCODING);
                  return strXML;
              } catch (IOException ex)  {
                  ex.printStackTrace();   // Never
              } catch (JiBXException ex)   {
                  ex.printStackTrace();
              } catch (java.lang.IllegalArgumentException ex)   {
                  ex.printStackTrace();
              }
          }
          return null;
      }