public Document styleDocument(       Document document,        String stylesheet    ) throws Exception {    // load the transformer using JAXP    TransformerFactory factory = TransformerFactory.newInstance();    Transformer transformer = factory.newTransformer(        new StreamSource( stylesheet )     );    // now lets style the given document    DocumentSource source = new DocumentSource( document );    DocumentResult result = new DocumentResult();    transformer.transform( source, result );    // return the transformed document    Document transformedDoc = result.getDocument();    return transformedDoc;}

解决方案 »

  1.   

    如果不能设置,dom4j就不能支持中文,否则会出错,我想那些开发者不可能没有想到这个问题吧,一定有API,但是怎么用就不清楚了
      

  2.   

    正好昨天我遇到这个问题,如此解决:
                      SAXReader reader = new SAXReader();
    org.dom4j.Document document = reader.read("D:\\ha.xml");
    OutputFormat of = new OutputFormat();
    of.setEncoding("gb2312"); //改变编码方式
    XMLWriter writer = new XMLWriter(new FileWriter  "d:\\dom4j.xml"), of); List list = document.selectNodes(
    "//PersonId[@name = 'chen_zhen']");
    if (list.size() > 0)
    {
    org.dom4j.Element e = (org.dom4j.Element)list.get(0);
    System.out.println(e.toString());
    e.setAttributeValue("name", "huo_yuanjia");
    e.setAttributeValue("age", "20");
    e.setName("Fighter"); //改变tag
    e.setText("0001"); //改变value
    }
    writer.write(document);
    writer.close();
      

  3.   

    以下函数可以实现编码转换:
    public void writeXML(String file,Document document,String encoding){
            try{
                FileWriter out = new FileWriter(new File(file));
                OutputFormat format = OutputFormat.createPrettyPrint();
                format.setEncoding(encoding == null ? format.getEncoding() : encoding);
                XMLWriter writer = new XMLWriter(out, format);
                writer.write(document);
                writer.close();
            }
            catch(IOException ex){
                ex.printStackTrace();
            }
        }