我用dom4j创建一个xml,里面有中文乱码
请问要怎么解决呢,xml文件里注释那一样,应该是中文,现在显示乱码package com.zjm.xml;import java.io.File;
import java.io.FileWriter;import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;public class createXML { /**
 * @param args
 */
public static void main(String[] args) {
// TODO Auto-generated method stub
createXML xml = new createXML();
xml.create();
}

public boolean create() {
boolean flag = false;
Document document = null; //文档
Element books = null; //根节点
Element book = null; //book节点
Element text = null; //text节点
OutputFormat format = null;
XMLWriter writer = null;

try {
document = DocumentHelper.createDocument();
books = document.addElement("books");
books.addComment("注释");

book = books.addElement("book");
book.addAttribute("name", "book1");
book.addAttribute("show", "true");
text = book.addElement("text");
text.setText("text1");

book = books.addElement("book");
book.addAttribute("name", "book2");
book.addAttribute("show", "false");
text = book.addElement("text");
text.setText("text2");

format = OutputFormat.createPrettyPrint();
format.setEncoding("GBK");
//format.setEncoding("UTF-8"); //用utf-8也不行

System.out.println(document.asXML());

writer = new XMLWriter(new FileWriter(new File("E://mytext.xml")), format);
writer.write(document);
writer.close();

flag = true;

return flag;
}
catch(Exception e) {
e.printStackTrace();
}
return flag;
}}
<?xml version="1.0" encoding="GBK"?><books>
  <!--עˍ-->          
  <book name="book1" show="true">
    <text>text1</text>
  </book>
  <book name="book2" show="false">
    <text>text2</text>
  </book>
</books>

解决方案 »

  1.   

    还有,xml文件第二行为什么是空格呢?
      

  2.   

    以前做过jdom,dom4j的CRUD,我给你找找看
      

  3.   

    你用其他的工具如记事本、写字板、ultra edit都打开一下看看。我的环境中format.setEncoding("UTF-8");用ultra edit默认打开是乱码,但记事本、写字板可以正常打开。format.setEncoding("GBK");用三个软件都打开正常。中文xp系统   
      

  4.   

    你用FileOutputStream就可以了。
    package com.dom4j;import java.io.FileOutputStream;
    import java.io.FileWriter;
    import java.io.Writer;
    import org.dom4j.Document;
    import org.dom4j.DocumentHelper;
    import org.dom4j.Element;
    import org.dom4j.io.OutputFormat;
    import org.dom4j.io.XMLWriter;import com.po.StudentBean;/*
     * 利用dom4j生成xml文件
     * */
    public class CreateXML {
    //传入学生类的bean
    public void CreateXMl(StudentBean sn){
    //创建document对象
    Document document = DocumentHelper.createDocument();
    //定义根节点Element
    Element rootGen = document.addElement("root");
    //定义根节点ROOT的子节点们
    Element nameGen = rootGen.addElement("Name");
    nameGen.addAttribute("name", "我是中文");
    Element ageGen = rootGen.addElement("Age");
    Element addrGen = rootGen.addElement("Address");
    Writer writer = null;
    OutputFormat format = null;
    XMLWriter xmlwriter = null;
    //将定义好的内容写入xml文件中
    try {
    // writer = new FileWriter("d:/test.xml");
    // writer = new FileOutputStream("d:/test.xml");
    //进行格式化
    format = OutputFormat.createPrettyPrint();
    //设定编码
    format.setEncoding("UTF-8");
    xmlwriter = new XMLWriter(new FileOutputStream("d:/test.xml"), format);
    xmlwriter.write(document);
    xmlwriter.flush();
    xmlwriter.close();
    System.out.println("-----------Xmlfile successfully created-------------");
    } catch (Exception e) {
    e.printStackTrace();
    System.out.println("-----------Exception occured during of create xmlfile -------");
    }
    }
    public static void main(String[] args) {
    CreateXML cx = new CreateXML();
    StudentBean sn = new StudentBean();
    cx.CreateXMl(sn);
    }
    }