dom4j操作xml

下面是dom4j基本操作xml
需要有的jar包
 1.dom4j-1.6.1.jar
 2.jaxen-1.1-beta-6.jar
User.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<users>
  <user id="1">
    <name>小丽</name>
    <age>18</age>
    <sex>女</sex>
  </user>

</users>


一·工具类
package com.utils;

import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.OutputStream;
import java.net.URL;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

public class XMLUtils {
	
	private static URL url;
	static
	{
		url = XMLUtils.class.getClassLoader().getResource("User.xml");
	}
	
	/**
	 * 打开xml 文件
	 * @author Administrator
	 * @return Document  返回Document 节点
	 * @throws DocumentException
	 */
	public static Document getDocument() throws DocumentException {
		
        SAXReader reader = new SAXReader();
        Document document = reader.read(url);
        return document;
    }
	
	
	/**
	 * 保存xml 文件
	 * @param savePath 保存url
	 * @author Administrator
	 * @throws IOException
	 */
	 public static void write(Document document,String savePath) throws IOException {

	        OutputFormat format = OutputFormat.createPrettyPrint();
	        OutputStream out = new FileOutputStream(savePath);
	        XMLWriter  writer = new XMLWriter(out, format );
	        writer.write( document );
	        writer.close();     
	    }

}


二。dao操作模拟数据库的增删改,查询
package com.dao.impl;

import java.util.ArrayList;
import java.util.List;

import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.Node;

import com.dao.UserDao;
import com.domain.User;
import com.exception.UserNotExistsException;
import com.utils.XMLUtils;

public class UserDaoXmlImpl implements UserDao {
	private static String savePath ;
	static
	{
	  savePath = XMLUtils.class.getClassLoader().getResource("User.xml").getPath();
	}
	
	
	/**
	 * 添加用户
	 * @param user 用户
	 */
	public void add(User user)
	{
		try 
		{
			Document document = XMLUtils.getDocument();
			Element root = document.getRootElement();
			
			Element userElement = root.addElement("user")
					              .addAttribute("id", user.getId().toString());
	
			Element nameElement = userElement.addElement("name");
			nameElement.setText(user.getName());
			
			Element ageElement = userElement.addElement("age");
			ageElement.setText(user.getAge().toString());
			
			Element sexElement = userElement.addElement("sex");
			sexElement.setText(user.getSex());
			
		    XMLUtils.write(document, savePath);
			
		  //  System.out.println(savePath);
			
		} 
		catch (Exception e)
		{
			throw new RuntimeException(e);
		}
		
	}
	
	/**
	 * 更新用户
	 * @param user 用户
	 */
	public void update(User user)
	{
		try 
		{
			Document document = XMLUtils.getDocument();
			Element root = document.getRootElement();
		
			Element userElement = (Element) root.selectSingleNode("//user[@id='"+user.getId().toString()+"']");
			
	        if(userElement==null)
	        {
			 throw new RuntimeException( new UserNotExistsException("用户不存在") );	
	        }
	        
			Element nameElement =  (Element) userElement.selectSingleNode("name");
			nameElement.setText(user.getName());
			
			Element ageElement = (Element) userElement.selectSingleNode("age");
			ageElement.setText(user.getAge().toString());
			
			Element sexElement = (Element) userElement.selectSingleNode("sex");
			sexElement.setText(user.getSex());
			
		    XMLUtils.write(document, savePath);
			
		} 
		catch (Exception e)
		{
			throw new RuntimeException(e);
		}
		
	}
	
	/* (non-Javadoc)
	 * @see com.dao.impl.UserDao#delete(java.lang.Integer)
	 */
	public void delete(Integer id)
	{
		try 
		{
			Document document = XMLUtils.getDocument();
			Element root = document.getRootElement();
		
			Element userElement = (Element) root.selectSingleNode("//user[@id='"+ id.toString()+"']");
			
	        if(userElement==null)
	        {
			 throw new RuntimeException( new UserNotExistsException("用户不存在") );	
	        }
	        
	        root.remove(userElement);
	     
		    XMLUtils.write(document, savePath);
			
		} 
		catch (Exception e)
		{
			throw new RuntimeException(e);
		}
	}
	
	/* (non-Javadoc)
	 * @see com.dao.impl.UserDao#findById(java.lang.Integer)
	 */
	public User findById(Integer id)
	{
		try 
		{
			Document document = XMLUtils.getDocument();
			Element root = document.getRootElement();
		
			Element userElement = (Element) root.selectSingleNode("//user[@id='"+id.toString()+"']");
			User user = null;
	        if(userElement==null)
	        {
			  return user;
	        }
	        
	        user = new User();
	        /*
	         * 属性的获取:
	         *  1.先获取属性对象: userElement.attribute("id")
	         *  2.获取属性值:userElement.attribute("id").getValue();
	         *         
	         */
	        String ids = userElement.attribute("id").getValue();
	        user.setId(Integer.valueOf( ids ));
	        
			Element nameElement =  (Element) userElement.selectSingleNode("name");
			user.setName(nameElement.getTextTrim());
			
			Element ageElement = (Element) userElement.selectSingleNode("age");
			user.setAge(Integer.valueOf( ageElement.getTextTrim().toString() ));
			
			Element sexElement = (Element) userElement.selectSingleNode("sex");
			user.setSex(sexElement.getTextTrim());
			
		   return user;
		    
			
		} 
		catch (Exception e)
		{
			throw new RuntimeException(e);
		}
		
	}
	
	/* (non-Javadoc)
	 * @see com.dao.impl.UserDao#findByName(java.lang.String)
	 */
	public User findByName(String name)
	{
		try 
		{
			Document document = XMLUtils.getDocument();
			Element root = document.getRootElement();
		
			List<Node> nodeList =  root.selectNodes("//user//name");
			
			Element nameElement = null;
			
			for(Node node : nodeList)
			{
				String text = node.getText().trim();
				
				if(name.equals(text))
				{
					nameElement = (Element) node;
					break;
				}
			}
			
			User user = null;
	        if(nameElement==null)
	        {
			  return user;
	        }
	        
	        user = new User();
	        Element userElement = nameElement.getParent();
	        /*
	         * 属性的获取:
	         *  1.先获取属性对象: userElement.attribute("id")
	         *  2.获取属性值:userElement.attribute("id").getValue();
	         *         
	         */
	        String ids = userElement.attribute("id").getValue();
	        user.setId(Integer.valueOf( ids ));
	        
		    nameElement =  (Element) userElement.selectSingleNode("name");
			user.setName(nameElement.getTextTrim());
			
			Element ageElement = (Element) userElement.selectSingleNode("age");
			user.setAge(Integer.valueOf( ageElement.getTextTrim().toString() ));
			
			Element sexElement = (Element) userElement.selectSingleNode("sex");
			user.setSex(sexElement.getTextTrim());
			
		   return user;
		    
			
		} 
		catch (Exception e)
		{
			throw new RuntimeException(e);
		}
		
		
	}
	
	
	/* (non-Javadoc)
	 * @see com.dao.impl.UserDao#getAll()
	 */
	public List<User> getAll()
	{
		try 
		{
			Document document = XMLUtils.getDocument();
			Element root = document.getRootElement();
		
			List<Node> nodeList =  root.selectNodes("//user//name");
			
			
			if(nodeList==null)
			{
				return null;
			}
			
			List<User> users = new ArrayList();
			for(Node node : nodeList)
			{
				
				Element nameElement = (Element) node;
				User user = new User();
				
		        Element userElement = nameElement.getParent();
		        /*
		         * 属性的获取:
		         *  1.先获取属性对象: userElement.attribute("id")
		         *  2.获取属性值:userElement.attribute("id").getValue();
		         *         
		         */
		        String ids = userElement.attribute("id").getValue();
		        user.setId(Integer.valueOf( ids ));
		        
			    nameElement =  (Element) userElement.selectSingleNode("name");
				user.setName(nameElement.getTextTrim());
				
				Element ageElement = (Element) userElement.selectSingleNode("age");
				user.setAge(Integer.valueOf( ageElement.getTextTrim().toString() ));
				
				Element sexElement = (Element) userElement.selectSingleNode("sex");
				user.setSex(sexElement.getTextTrim());

				users.add(user);
				
				
			}
			
						
		   return users;
		    
			
		} 
		catch (Exception e)
		{
			throw new RuntimeException(e);
		}
	
		
	}

	public List<User> query(int start, int seze) {
		// TODO Auto-generated method stub
		return null;
	}
	
	/* (non-Javadoc)
	 * @see com.dao.impl.UserDao#query(int, int)
	 */
	

}

三。测试类

import java.util.List;

import org.junit.Test;

import com.dao.UserDao;
import com.dao.impl.UserDaoXmlImpl;
import com.domain.User;


public class UserDaoTest {

	@Test
	public void testAdd()
	{
		 UserDao dao = new UserDaoXmlImpl();
		 for(int i=101;i<121;i++)
		 {
		  User user = new User();
		 
		  user.setId(i);
		  user.setName("王五"+i);
		  user.setAge(18+i-127);
		  user.setSex("男");
		  dao.add(user);
		 }
	}
	
	@Test
	public void testUpdate()
	{
		 UserDao dao = new UserDaoXmlImpl();
		 User user = new User();
		 
		 user.setId(100);
		 user.setName("吴二");
		 user.setAge(28);
		 user.setSex("男");
		 dao.update(user);
	}
	
	@Test
	public void testDelete()
	{
		 UserDao dao = new UserDaoXmlImpl();
		 dao.delete(1);
	}
	
	
	@Test
	public void testFindById()
	{
		 UserDao dao = new UserDaoXmlImpl();
		 User user = dao.findById(100);
		 
		 System.out.println(user.getName());
	}
	
	@Test
	public void testFindByName()
	{
		 UserDao dao = new UserDaoXmlImpl();
		 User user = dao.findByName("吴二");
		 
		 System.out.println(user.getName());
	}
	
	@Test
	public void testGetAll()
	{
		 UserDao dao = new UserDaoXmlImpl();
		 List<User> users  = dao.getAll();
		 
		 for(User user:users)
		 {
		  System.out.println(user.getName());
		 }
	}
	
	
}






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值