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()); }}}