Dom4j的读写

来源:互联网 发布:淘宝商家如何删除差评 编辑:程序博客网 时间:2024/06/18 09:35

这里使用dom4j对xml的简单读写

使用jar包:dom4j、xml-apis

当前先通过写入的方式简单了解dom4j
import java.io.FileOutputStream;import java.io.IOException;import org.dom4j.Document;import org.dom4j.DocumentHelper;import org.dom4j.Element;import org.dom4j.io.OutputFormat;import org.dom4j.io.XMLWriter;public class DomWrite {public static void main(String[] args) throws IOException {//创建根节点/创建节点使之变成跟节点Element root = DocumentHelper.createElement("students");Document documte = DocumentHelper.createDocument(root);//创建根节点//创建第一层子节点并设置属性Element element1 = root.addElement("student");element1.addAttribute("num", "001").addAttribute("class", "c1");//设置学号,班级//创建第二层节点element1.addElement("学号").addText("001");element1.addElement("班级").addText("c1");element1.addElement("姓名").addText("黎明");element1.addElement("性别").addText("男");element1.addElement("年龄").addText("13");String path = "test.xml";OutputFormat format = OutputFormat.createPrettyPrint();//整齐的排版//OutputFormat.createCompactFormat();//紧凑的排版format.setEncoding("utf8");XMLWriter writer = new XMLWriter(new FileOutputStream(path), format);writer.write(documte);//写入文件writer.close();}}


生成的文件内容为
<?xml version="1.0" encoding="utf8"?><students>  <student num="001" class="c1">    <学号>001</学号>    <班级>c1</班级>    <姓名>黎明</姓名>    <性别>男</性别>    <年龄>13</年龄>  </student></students>

下面是读写的综合例子
import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.util.Iterator;import org.dom4j.Document;import org.dom4j.DocumentException;import org.dom4j.Element;import org.dom4j.io.OutputFormat;import org.dom4j.io.SAXReader;import org.dom4j.io.XMLWriter;/** * 使用jar包,dom4j、xml-apis * @Description: dom4j读写 * 实现一个小功能,读取文件,删除节点班级,学号修改为4位如0001,添加一位学生,保存到文件 * @author zhanbian * @date 2017年7月3日 下午2:09:52 */public class DomReadWrite {@SuppressWarnings("unchecked")public static void main(String[] args) throws DocumentException, IOException {String path = "test.xml";File file = new File(path);if(!file.exists()){System.out.println("创建功能请往上看");return;}else{SAXReader reader = new SAXReader();Document document = reader.read(file);//这获得xml的内容System.out.println(document.asXML());//看看文件中都有什么内容Element root = document.getRootElement();//获得root节点Iterator<Element> elem_stus = root.elementIterator("student");while(elem_stus.hasNext()){Element elem_stu = elem_stus.next();String numvalue = elem_stu.attributeValue("num");if(numvalue.length()==3){//修改学号elem_stu.attribute("num").setValue("0"+numvalue);elem_stu.element("学号").setText("0"+numvalue);}Element clas = elem_stu.element("班级");//删除班级节点elem_stu.remove(clas);}//创建第一层子节点并设置属性Element element1 = root.addElement("student");element1.addAttribute("num", "0002").addAttribute("class", "c1");//设置学号,班级//创建第二层节点element1.addElement("学号").addText("0002");element1.addElement("姓名").addText("关羽");element1.addElement("性别").addText("男");element1.addElement("年龄").addText("13");OutputFormat format = OutputFormat.createPrettyPrint();format.setEncoding("utf8");XMLWriter writer = new XMLWriter(new FileOutputStream(file), format);writer.write(document);writer.close();}}}


这次的文件内容是
<?xml version="1.0" encoding="UTF-8"?><students>   <student num="0001" class="c1">     <学号>0001</学号>      <姓名>黎明</姓名>      <性别>男</性别>      <年龄>13</年龄>   </student>    <student num="0002" class="c1">    <学号>0002</学号>    <姓名>关羽</姓名>    <性别>男</性别>    <年龄>13</年龄>  </student></students>

这里提供别人提供的更全的使用方法http://blog.csdn.net/xiazdong/article/details/7294109