dom4j操作xml

来源:互联网 发布:网络刷手是可靠吗 编辑:程序博客网 时间:2024/06/03 21:44
下面是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 stubreturn 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 {@Testpublic 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); }}@Testpublic void testUpdate(){ UserDao dao = new UserDaoXmlImpl(); User user = new User();  user.setId(100); user.setName("吴二"); user.setAge(28); user.setSex("男"); dao.update(user);}@Testpublic void testDelete(){ UserDao dao = new UserDaoXmlImpl(); dao.delete(1);}@Testpublic void testFindById(){ UserDao dao = new UserDaoXmlImpl(); User user = dao.findById(100);  System.out.println(user.getName());}@Testpublic void testFindByName(){ UserDao dao = new UserDaoXmlImpl(); User user = dao.findByName("吴二");  System.out.println(user.getName());}@Testpublic void testGetAll(){ UserDao dao = new UserDaoXmlImpl(); List<User> users  = dao.getAll();  for(User user:users) {  System.out.println(user.getName()); }}}


	
				
		
原创粉丝点击