dom4j解析——增删改查元素、属性

来源:互联网 发布:java单例模式程序 编辑:程序博客网 时间:2024/05/27 14:14
一:dom4j查找元素
package com.ithhedu.dom4j;
 
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
 
public class dom4jDemo {
/**
* @version:1.0
* @author zaza
* @since 2015/11/2
*/
public static void main(String[] args) throws Exception {
//1、获取解析器
SAXReader reader = new SAXReader();
 
//2、解析xml ,获取代表整个文档的dom对象
Document dom = reader.read("1.xml");
//3、获取根节点
Element root = dom.getRootElement();
//4、获取元素进行打印
String Name = root.element("书").element("书名").getText();
System.out.println(Name);
}
}
​二、添加成员
public void add() throws DocumentException, IOException{
SAXReader read = new SAXReader();
Document doc = read.read("1.xml");
Element ele = doc.getRootElement();
//凭空创建<特价>节点,设置标签体
Element price = DocumentHelper.createElement("特价");
price.setText("20.0");
//获取父标签<书> 将特价节点挂载上去
Element book = ele.element("书");
book.add(price);
//将内存中的dom树写到xml文件中从而使xml中的数据进行更新
XMLWriter write = new XMLWriter(new FileOutputStream("1.xml"),OutputFormat.createPrettyPrint());
write.write(doc);
write.close();
}

​三、修改元素
1、解析xml
2、拿标签、改标签
@Test
public void exchange() throws Exception{
//获取解析器
SAXReader read = new SAXReader();
//解析xml文件
Document dom = read.read("1.xml");
//获取xml文件下的根节点
Element root = dom.getRootElement();
//在根节点下面修改价格
root.element("书").element("怎么学习java").setText("傻逼是怎么炼成的");
XMLWriter writer = new XMLWriter(new FileOutputStream("1.xml"),OutputFormat.createPrettyPrint());
 
//写入数据到dom文件中
writer.write(dom);
}
四、删除子元素
             原理:找”父亲“,杀(删)”儿子“
             过程:
                       第一:拿 ”书“元素
                       第二:拿 ”特价“
                       第三:利用删除的方法删掉
@Test
public void delete() throws Exception{
//获取解析器
SAXReader read = new SAXReader();
//解析xml文件
Document doc = read.read("1.xml");
//获取根节点
Element root = doc.getRootElement();
//通过父亲节点获取子节点
Element price = root.element("书").element("售价");
//删掉子节点
price.getParent().remove(price);
//重新写入xml文件
XMLWriter writer = new XMLWriter(new FileOutputStream("1.xml"),OutputFormat.createPrettyPrint());
writer.write(doc);
writer.close();
}
结果:
<书架> 
   <书> 
     <怎么学习java>傻逼是怎么炼成的</怎么学习java>  
     <作者>Demo</作者>  
     <特价>20.0</特价>  
     <特价>20.0</特价> 
   </书>    

0 0