dom4j解析
xml
<?xml version="1.0" encoding="utf-8"?>
<!--引入dtd去约束该xml文件-->
<班级>
<学生 性别="女" 学号="sp002">
<名字>林青霞</名字>
<介绍>学习刻苦</介绍>
<年龄>23</年龄>
</学生>
<学生>
<名字>宋江</名字>
<年龄/>
<介绍/>
</学生>
<学生>林冲</学生>
<学生>
<名字>宋江</名字>
<年龄/>
<介绍/>
</学生>
</班级>
sax解析
要引入dom4j的jar包
package com.dom4j.test;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.util.Iterator;
import java.util.List;
/**
* Created by 宋贤 on 2015/10/14.
*/
public class Dom4jTest {
//演示用dom4j来对xml进行crud操作
public static void main(String[] args) throws Exception{
SAXReader saxReader=new SAXReader();
Document document=saxReader.read(new File("src/com/dom4j/test/myClass2.xml"));
// list(document.getRootElement());
// read(document);
// add(document);
// delete(document);
addByIndex(document);
}
public static void list(Element element){
System.out.println(element.getName()+" "+element.getTextTrim());
Iterator iterator=element.elementIterator();
while (iterator.hasNext()){
Element element1=(Element)iterator.next();
list(element1);
}
}
//读取
public static void read(Document document){
Element root=document.getRootElement();
//取出root下的所有学生元素
Element stu=(Element)root.elements("学生").get(0);
// System.out.println("名字:"+stu.element("名字").getText());
Element stu_name=stu.element("名字");
System.out.println("名字:"+stu_name.getText()+" 性别:"+stu_name.attributeValue("性别"));
//看下面代码能否跨层取
//不能跨层取
// Element stu2=(Element)root.elements("名字").get(0);
// System.out.println(stu2.getText());
}
//读取
public static void add(Document document) throws Exception{
Element newStu= DocumentHelper.createElement("学生");
Element newStu_name= DocumentHelper.createElement("名字");
newStu_name.setText("宋江");
Element newStu_age= DocumentHelper.createElement("年龄");
Element newStu_intro= DocumentHelper.createElement("介绍");
//把三个元素添加到newStu下
newStu.add(newStu_name);
newStu.add(newStu_age);
newStu.add(newStu_intro);
//把newStu加到根元素之下
document.getRootElement().add(newStu);
//可能出现中文乱码
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("utf-8");
XMLWriter xmlWriter=new XMLWriter(new FileOutputStream(new File("src/com/dom4j/test/myClass2.xml")),format);
xmlWriter.write(document);
xmlWriter.close();
}
//删除
public static void delete(Document document)throws Exception{
Element stu=document.getRootElement().element("学生");
// stu.getParent().remove(stu);
stu.remove(stu.attribute("大哥"));
//可能出现中文乱码
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("utf-8");
XMLWriter xmlWriter=new XMLWriter(new FileOutputStream(new File("src/com/dom4j/test/myClass2.xml")),format);
xmlWriter.write(document);
xmlWriter.close();
}
public static void addByIndex(Document document)throws Exception{
Element element=DocumentHelper.createElement("学生");
element.setText("林冲");
List list=document.getRootElement().elements("学生");
for (int i=0;i<list.size();i++){
Element name=((Element)list.get(i)).element("名字");
if(name.getText().equals("宋江")){
list.add(i+1,element);
break;
}
}
// list.add(1,element);
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("utf-8");
XMLWriter xmlWriter=new XMLWriter(new FileOutputStream(new File("src/com/dom4j/test/myClass2.xml")),format);
xmlWriter.write(document);
xmlWriter.close();
}
}