利用Dom4j解析xml文件相对比较容易,非常好理解。现在我们来看看下面的例子,从例子中你就可以了解Dom4j解析XML文件的方法。
首先我们要导入Dom4j的jar包。导入后就可以进行解析了
主要思想:其实就是得到document对象,再用这个对象获取根节点。
SAXReader reader = new SAXReader();
Document doc = reader.read(new File("D:/test.xml"));
//获取root元素
Element root = doc.getRootElement();
得到根节点后就可以利用根节点获取子节点的集合了。
List Children = root.elements();//得到根目录的子节点的集合
通过循环即可得到每个子节点。如果子节点中还含有子节点,我们就可以把这个子节点当成根节点来解析。
for(int i=0;i<Children.size();i++){
Element Child = (Element) Children.get(i);//遍历集合中的每一个元素,即可得到每个子节点
Child.elements();
//.......
}
首先来看看添加
public void addChile(){
// 得到Document
SAXReader reader = new SAXReader();
try {
Document doc = reader.read(new File("D:/test.xml"));
//获取root元素
Element root = doc.getRootElement();
System.out.println(root);
Element Chile= root.addElement("Chile");
// 给节点添加属性,名为id
Chile.addAttribute("id", "1");
//创建时间
String date=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
Chile.addAttribute("createOn", date);
// 设置保存的格式化器 1. \t,使用什么来完成缩进 2. true, 是否要添加换行
OutputFormat format = new OutputFormat("\t", true);
format.setTrimText(true); //去掉空白
// 在创建Writer时,指定格式化器
XMLWriter writer = new XMLWriter(new FileOutputStream("D:/test.xml"), format);
writer.write(doc);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
删除一个子节点,删除特定属性值的节点利用
Child.attributeValue("属性名")
即可获取节点的属性值
public void deleteBeancon(String xmlPath){
SAXReader reader = new SAXReader();
try {
Document doc = reader.read(new File(xmlPath));
//获取root元素
Element root = doc.getRootElement();
List Children = root.elements();//得到根目录的子节点的集合
for(int i=0;i<Children.size();i++){
Element Child = (Element) Children.get(i);//遍历集合中的每一个元素,即可得到每个子节点
if("1".equals(Child.attributeValue("id"))){//判断子节点的属性值是否符合删除的条件
root.remove(Child);
}
}
}
// 设置保存的格式化器 1. \t,使用什么来完成缩进 2. true, 是否要添加换行
OutputFormat format = new OutputFormat("\t", true);
format.setTrimText(true); //去掉空白
// 在创建Writer时,指定格式化器
XMLWriter writer = new XMLWriter(new FileOutputStream(xmlPath), format);
writer.write(doc);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
修改某个节点的属性值
Attribute attr = root.attribute("version");//获取根节点的属性
attr.setValue(newVersion);//设置属性
public boolean alterRootVersion(String xmlPath,String newVersion){
boolean flag=false;
SAXReader reader=new SAXReader();
try {
Document doc = reader.read(new File(xmlPath));
Element root = doc.getRootElement();
Attribute attr = root.attribute("version");
attr.setValue(newVersion);
// 设置保存的格式化器 1. \t,使用什么来完成缩进 2. true, 是否要添加换行
OutputFormat format = new OutputFormat("\t", true);
format.setTrimText(true); //去掉空白
// 在创建Writer时,指定格式化器
XMLWriter writer = new XMLWriter(new FileOutputStream(xmlPath), format);
writer.write(doc);
flag=true;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return flag;
}
这里只是初略的给出几个例子,至于dom4j里面方法的用法还需要上网查或者查看api文档