Dom4j 解析xml文件,实现xml文件的增删改查

利用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文档



  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值