关于dom4j创建xml文件疑问
import java.io.File;import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;
public class xml {
public void add(String name,String 易做图){
Document doc=DocumentHelper.createDocument();
Element stu_root=doc.addElement("Student");
Element stu_name=stu_root.addElement("name");
stu_name.setText(name);
Element stu_易做图=stu_root.addElement("易做图");
stu_易做图.setText(易做图);
OutputFormat output=OutputFormat.createPrettyPrint();
output.setEncoding("GB2312");
try {
XMLWriter writer=new XMLWriter(new FileOutputStream(new File("student.xml"),true),output);
writer.write(doc);
writer.close();
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
<?xml version="1.0" encoding="GB2312"?>
<Student>
<name>黎明</name>
<易做图>男</易做图>
</Student>
<?xml version="1.0" encoding="GB2312"?>
<Student>
<name>asd</name>
<易做图>asd</易做图>
</Student>
为什么每次执行程序后,就会添加<?xml version="1.0" encoding="GB2312"?>这一句,求解答。谢谢 --------------------编程问答-------------------- 这个主要是你的参数使用问题
XMLWriter writer=new XMLWriter(new FileOutputStream(new File("student.xml"),true),output);
把参数true该为false就可以了 true是append(追加模式),改为false就是覆盖模式了 --------------------编程问答-------------------- 1.首先你这个add(String name,String 易做图)方法就是一个建立完整xml文件的方法。每次调用add(String name,String 易做图)方法,都会建立一个完整的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 易做图)方法时,若为true,则在原xml文件后面拼接新的xml代码。若为false,则覆盖掉原来的xml代码。 --------------------编程问答-------------------- 这就是xml定义的规范啊,,不写output.setEncoding("GB2312"); 默认是UTF-8 --------------------编程问答-------------------- 我现在就是要第一次写入XML文件的时候加上文件头,而后面在写的时候不加xml文件头,也就是一个xml文件内只存在一个文件头,该如何解决? --------------------编程问答-------------------- 没遇到过这个问题,别人的回答算学习了 --------------------编程问答-------------------- 遇到过这个问题,别人的回答算学习了 --------------------编程问答-------------------- 楼主自己不是设置了output.setEncoding("GB2312");编码为GB2312吗不设置的话默认就是UTF-8 --------------------编程问答--------------------
那就不是一个完整的xml文件了,,直接通过浏览器打开会报错。
补充:Java , Java EE