Jdom的Bug,你可以修改Jdom的Source,或者用我的方法:
 public static void OutputDocToFile(Document doc, String xslpath,
                                     String encoding, String filePath) {
    //setup this like outputDocument
    try {
      XMLOutputter outputter = new XMLOutputter("  ", true, encoding);
      FileWriter out = new FileWriter(filePath);
      out.write("<?xml version=\"1.0\"");
      if (encoding != null && encoding.length() > 1) {
        //编码的名字至少有一个字符
        out.write(" encoding=\"" + encoding + "\"");
      }
      out.write("?>");
      if (xslpath != null && xslpath.length() > 3) {
        //xsl 文件的名字至少有三个字符
        out.write("<?xml-stylesheet type='text/xsl' href='" + xslpath + "'?>");
      }
      outputter.output(doc.getRootElement(), out);
      out.close();
    }
    catch (java.io.IOException e) {
      e.printStackTrace();
    }
  }

解决方案 »

  1.   

    用这个代码试试:ProcessingInstruction pi = new ProcessingInstruction("xml-stylesheet","href=\"E:\\1.xsl\" type=\"text/xsl\"");
    doc.addContent(pi);
      

  2.   

    package com.deyway.sales.product;
    import org.jdom.Namespace;
    import org.jdom.Document;
    import org.jdom.Element;
    import org.jdom.output.XMLOutputter;
    import org.jdom.JDOMException;
    import org.jdom.input.SAXBuilder;
    import java.io.FileInputStream;
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.util.StringTokenizer;
    import java.io.FileWriter;
    import java.util.ArrayList;
    public class xmlManager
    {

    private Document doc;

    //导入xml文件
    public void load(String xmlFile) throws IOException,
    FileNotFoundException,JDOMException
    {
         SAXBuilder builder=new SAXBuilder();
         doc=builder.build(new File(xmlFile));
    }

    //删除节点及其子节点(根/节点名称)
        public boolean DelNode(String NodeStr)
        {
         StringTokenizer S=new StringTokenizer(NodeStr,"/");
        
         if(!S.hasMoreTokens()){return false;} //如果没有字符串,返回
        
         Element MyEle=doc.getRootElement();
        
         String nodeStr;
        
         while(S.hasMoreTokens()&&S.countTokens()>1)
         {
         nodeStr=S.nextToken();
         MyEle=MyEle.getChild(nodeStr);
         }     return MyEle.removeChildren(S.nextToken());
        }
        
    //删除指定节点(根/节点名称,序号)
        public boolean DelNode(String NodeStr,int id)
        {
         StringTokenizer S=new StringTokenizer(NodeStr,"/");
        
         if(!S.hasMoreTokens()){return false;} //如果没有字符串,返回
        
         Element MyEle=doc.getRootElement();
        
         String nodeStr;
        
         while(S.hasMoreTokens()&&S.countTokens()>1)
         {
         nodeStr=S.nextToken();
         MyEle=MyEle.getChild(nodeStr);
         }
         return MyEle.removeContent((Element)MyEle.getChildren(S.nextToken()).get(id));
        }
        
        
    //添加节点(根/节点名称,字符串)
        public void AddNode(ArrayList list) throws JDOMException,Exception
        {
         Element MyElement=doc.getRootElement();
        
         //*******获取命名空间*******
         Namespace rs=MyElement.getNamespace("xmlns:rs");
         Namespace z=MyElement.getNamespace("xmlns:z");
        
         MyElement=MyElement.getChild("data",rs);
        
         //****获取元素命名空间*********
         Element spaceElement=MyElement.getChild("row",z);
         z=spaceElement.getNamespace();
         MyElement.removeChildren("row",z);
             
         displaySalesSlipBean dForm;
         for(int i=0;i<list.size();i++)
         {
         dForm=(displaySalesSlipBean)list.get(i);
         Element newNode=new Element("row");
         newNode.setNamespace(z);
         MyElement.addContent(newNode);
        
         newNode.setAttribute("product_id",dForm.getProduct_id());
         newNode.setAttribute("productName",dForm.getProductName());
         newNode.setAttribute("barCode",dForm.getBarCode());
         newNode.setAttribute("spec",dForm.getSpec());
         newNode.setAttribute("price",String.valueOf(dForm.getPrice()));
         newNode.setAttribute("unit",dForm.getUnit());
         newNode.setAttribute("quantity",String.valueOf(dForm.getQuantity()));
         newNode.setAttribute("sumMoney",String.valueOf(dForm.getsumMoney()));
         newNode.setAttribute("residue",String.valueOf(dForm.getResidue()));
         newNode.setAttribute("re",dForm.getRe());
         newNode.setAttribute("id",String.valueOf(dForm.getId()));
         newNode.setAttribute("enterDate","0000000000000a8b");
        }
        }

    //保存操作结果
        public void save(String OutputFile) throws IOException,
    FileNotFoundException,JDOMException
        {
         FileWriter writer=new FileWriter(OutputFile,false);
         XMLOutputter Outputter=new XMLOutputter();
         Outputter.setEncoding("GBK");
         Outputter.output(doc,writer);
         writer.close();
        }

    }