private Document toDom(HttpServletRequest request) throws  ServletException{
      Debug.println("开始创建DOM树");
      DocumentBuilder docBuilder = null;
      Document document = null ; 
      ByteArrayInputStream input = null;
      String sXmlData = request.getParameter("txtConstructStep");
      Debug.println("getStr="+sXmlData);
      sXmlData = "<?xml version=\"1.0\" encoding=\"GB2312\"?>" + sXmlData;
      //ByteArrayInputStream input
      try
      {
         input = new  ByteArrayInputStream(sXmlData.getBytes());
         docBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
         document = docBuilder.parse(input);  
         //System.out.println(document.toString());
         Debug.println("DOM="+document);
      }
      catch(Exception E)
      {
          throw new ServletException("创建DOM树时发生异常:" + E.getMessage());
      }
      finally
      {
          if (input != null)
          {
              try
              {
                input.close();
              }
              catch(IOException ioE)
              {
                  
              }
          }
      }
      //
      Debug.println("DOM树创建完毕");
      return document;
  }

解决方案 »

  1.   

    以上的程序虽然不是用JDOM创建的(import javax.xml.parsers.*;),但基本的思想相似:将字符转换为字符流(input = new  ByteArrayInputStream(sXmlData.getBytes());)。
      

  2.   

    但是当里面有汉字的时候就会出错,Document对象创建不了.
    报错如下:
    org.jdom.JDOMException: Invalid byte 1 of 1-byte UTF-8 sequence.: Invalid byte 1 of 1-byte UTF-8 sequence.
      

  3.   

    sXmlData = "<?xml version=\"1.0\" encoding=\"GB2312\"?>" + sXmlData;设置编码为GBK 或 gb2312