try
{
  bytes[] bt = xmlStr.getBytes();
  ByteArrayInputStream bais = new ByteArrayInputStream(bt);
  DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
  DocumentBuilder builder = factory.newDocumentBuilder();
  Document doc = builder.parse(bais);
}
catch(Exception)
{
  e.printStackTrace();
}

解决方案 »

  1.   

    你用的不是jdom的解析器吧?
      

  2.   

    用jdom的解析器能解决吗?如果现在换javax的解析器,我就死定了!
      

  3.   

    哪个解析器还不是一样从你的错误来看问题出在String上
      

  4.   

    因为最后生成的xml文档并不完全符合标准,所以我这里还用了一个自己编的解析类,整个程序看起来会更糊涂的。稍等,我写一个简单一点的例子,发给你如何??
      

  5.   

    String sr = xml片断;
    StringReader streader= new StringReader(sr);
    InputSource iSrc = new InputSource(streader);
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    DocumentBuilder builder=factory.newDocumentBuilder();//建立DOM工厂,形成DOC文件
    doc=builder.parse(iSrc);//对文件进行解析
      

  6.   

    package com.test;import java.util.*;
    import org.jdom.*;
    import org.jdom.input.*;
    import org.jdom.output.*;
    import java.text.*;
    import java.io.*;public class test {    public test() {
        }
        private void getxml(String str){
            Element ele ;
            Element elenest;
            try{
                SAXBuilder sax = new SAXBuilder();
                String sxmlstr = "<root>" + str +"</root>" ;
                Document doc=sax.build(new ByteArrayInputStream(str.getBytes()));
                //Document doc =sax.build(new StringBufferInputStream(str));
                ele = doc.getRootElement() ;
                if( ele.removeChildren() ){
                        elenest = new Element("author");
                        elenest.addContent("Center");
                        ele= ele.addContent(elenest);                    elenest = new Element("promotionno");
                        elenest.addContent("9999");
                        ele= ele.addContent(elenest);                    elenest = new Element("promotionname");
                        elenest.addContent("aaaa");
                        ele= ele.addContent(elenest);                    elenest = new Element("startdate");
                        elenest.addContent("2002/12/17");
                        ele= ele.addContent(elenest);                    elenest = new Element("enddate");
                        elenest.addContent("2002/12/19");
                        ele= ele.addContent(elenest);                    elenest = new Element("discountmode");
                        elenest.addContent("AllDay");
                        ele= ele.addContent(elenest);
                }
                System.out.print("new XML File-----------> ");
                XMLOutputter xmloutput = new XMLOutputter();
                xmloutput.output(ele,System.out);
           }
            catch(Exception e){
                e.printStackTrace();
            }
        }    private String readxml(File file){
            int BUFFER = 2048;
            String fileCon="";
            String fileContent;
            try{
                DataInputStream in = new DataInputStream(
                                        new BufferedInputStream(
                                            new FileInputStream(file)));
                byte data[] = new byte[BUFFER];
                int count;
                while((count = in.read(data, 0,BUFFER)) != -1 ) {
                    fileContent = new String(data,0,count);
                    fileCon = fileCon + fileContent;
                    fileContent ="";
                }
                in.close() ;
            }catch(Exception e) {
                e.printStackTrace();
            }Finally:
                return fileCon.trim();
        }
        /**
         *
         * @param arg
         */
        public static void main(String[] arg){
            test mytest = new test();
            String filetext = mytest.readxml(new File("..\\test.xml"));
            System.out.println("old XML File-----------> "+filetext);
            mytest.getxml(filetext);
        }
    }
    另外忘了告诉你,好像在jbuilder里不会提示出错,错误提示是在tomcat里出现的。
    org.jdom.JDOMException: Error on line 1: org.apache.crimson.parser/P-076 Unconvertible UTF-8 character beginning with 0x88
            at org.jdom.input.SAXBuilder.build(SAXBuilder.java:407)
            at org.jdom.input.SAXBuilder.build(SAXBuilder.java:428)
            at com.hzfuji.jwc.promotion.PromotionProc.updatexml(PromotionProc.java:1
    110)
            at com.hzfuji.jwc.promotion.PromotionProc.outFileXML(PromotionProc.java:
    736)
    能解决吗?麻烦你了,谢谢!
      

  7.   

    在jbuilder里不会提示出错,错误提示是在tomcat里出现的?你先检查一下两边用的jdom.jar是不是一样的最好去www.jdom.org下载最新版本的(应该是beta8)用
      

  8.   

    test.xml的内容:
    <reserveitem index="1"><author>Center</author><promotionno>021217132033</promotionno><promotionname>aaaa</promotionname><startdate>2002/12/01</startdate><enddate>2002/12/02</enddate><discountmode>TimeService</discountmode></reserveitem>