这个主要是你的参数使用问题
XMLWriter writer=new XMLWriter(new FileOutputStream(new File("student.xml"),true),output);
把参数true该为false就可以了 true是append(追加模式),改为false就是覆盖模式了

解决方案 »

  1.   

    1.首先你这个add(String name,String sex)方法就是一个建立完整xml文件的方法。每次调用add(String name,String sex)方法,都会建立一个完整的xml文件,包含xml文件头。在代码中的这一句:writer.write(doc),我们来查看一下dom4j中相关的源代码,public void write(Document doc) throws IOException {
            writeDeclaration();          if (doc.getDocType() != null) {
                indent();
                writeDocType(doc.getDocType());
            }        for (int i = 0, size = doc.nodeCount(); i < size; i++) {
                Node node = doc.node(i);
                writeNode(node);
            }        writePrintln();        if (autoFlush) {
                flush();
            }
        }也就是说每次使用write(Document doc)这个方法时候,都会默认增加xml头,即代码中红色部分。所以你每次执行程序都会添加那一句话。
    2.如楼上所说,true为append。运行add(String name,String sex)方法时,若为true,则在原xml文件后面拼接新的xml代码。若为false,则覆盖掉原来的xml代码。
      

  2.   

    这就是xml定义的规范啊,,不写output.setEncoding("GB2312");  默认是UTF-8
      

  3.   

    我现在就是要第一次写入XML文件的时候加上文件头,而后面在写的时候不加xml文件头,也就是一个xml文件内只存在一个文件头,该如何解决?
      

  4.   

    楼主自己不是设置了output.setEncoding("GB2312");编码为GB2312吗不设置的话默认就是UTF-8
      

  5.   

    那就不是一个完整的xml文件了,,直接通过浏览器打开会报错。