dom4j操作xml

来源:互联网 发布:开放式厨房 知乎 编辑:程序博客网 时间:2024/05/16 19:03

1.导入,jaxen是快速定位查找用的

2.设计读取xml和写入xml的帮助类


import java.io.FileOutputStream;import org.dom4j.Document;import org.dom4j.io.OutputFormat;import org.dom4j.io.SAXReader;import org.dom4j.io.XMLWriter;public class XmlUtil {//动态获取xml文件,该文件放在classes下,用类加载器也可以获取到,放在src下会自动放在classes下//加"/"为绝对路径,这种是用获取src中的private static String filePath = XmlUtil.class.getResource("/SystemUser.xml").getPath();public static Document getDocument(){SAXReader reader = new SAXReader();try {//把文件读取到内存中,数据封装在Document接口中Document document = reader.read(filePath);return document;} catch (Exception e) {e.printStackTrace();return null;}}/** * 把获取到内存中的Document接口写到xml文件中 * @param document */public static void writeXML(Document doc){//设置漂亮输出格式OutputFormat format=OutputFormat.createPrettyPrint();//设置制表符,有缩进    format.setIndent("\t");//    format.setEncoding("utf-8");try {XMLWriter writer = new XMLWriter(new FileOutputStream(filePath),format);//有则追加,没则全写到文件中writer.write(doc);writer.close();} catch (Exception e) {e.printStackTrace();}}public static void main(String[] args) {XmlUtil.writeXML(XmlUtil.getDocument());}}

3.dom4j对xml的crud及分页,登陆

import com.zxg.util.PageUtil;import com.zxg.vo.SystemUser;public interface ISystemUserDao {void add(SystemUser systemUser);void update(SystemUser systemUser);void delete(int userid);SystemUser get(int userid);PageUtil getPageUtil(int currentPage,int pageSize,SystemUser systemUser);SystemUser login(String username);}

import java.util.ArrayList;import java.util.List;import org.dom4j.Document;import org.dom4j.Element;import com.zxg.dao.ISystemUserDao;import com.zxg.util.PageUtil;import com.zxg.util.PrimaryKeyUtil;import com.zxg.util.XmlUtil;import com.zxg.vo.SystemUser;public class SystemUserDao implements ISystemUserDao{public void add(SystemUser systemUser) {Document doc = XmlUtil.getDocument();Element rootEle = doc.getRootElement();Element userEle = rootEle.addElement("user");//这里也可以用add()userEle.addAttribute("userid", PrimaryKeyUtil.getXmlId() + "");//为该元素添加username元素Element nameEle = userEle.addElement("username");//为该元素添加空白子元素(即文本元素)nameEle.setText(systemUser.getUsername());Element pwdEle = userEle.addElement("pwd");pwdEle.setText(systemUser.getPwd());Element birEle = userEle.addElement("birthday");birEle.setText(systemUser.getBirthday());XmlUtil.writeXML(doc);}public void delete(int userid) {Document doc = XmlUtil.getDocument();//先找到有没有该元素Element ele = (Element) doc.selectSingleNode("/users/user[@userid="+userid+"]");Element rootEle = doc.getRootElement();//根元素删除子元素,即父元素删除子元素rootEle.remove(ele);XmlUtil.writeXML(doc);}public SystemUser get(int userid) {Document doc = XmlUtil.getDocument();//先找到有没有该元素Element userEle = (Element) doc.selectSingleNode("/users/user[@userid="+userid+"]");//这种可以用//String username = userEle.element("username").getText();String username = userEle.elementText("username");String pwd = userEle.element("pwd").getText();String birthday = userEle.element("birthday").getText();SystemUser s = new SystemUser(username,pwd,birthday);s.setUserid(userid);return s;}public SystemUser get(String username) {Document doc = XmlUtil.getDocument();//先找到有没有该元素Element userEle = (Element) doc.selectSingleNode("/users/user[username='"+username+"']");if(userEle != null){//这种可以用//String username = userEle.element("username").getText();String userid = userEle.attributeValue("userid");String pwd = userEle.element("pwd").getText();String birthday = userEle.element("birthday").getText();SystemUser s = new SystemUser(username,pwd,birthday);s.setUserid(Integer.parseInt(userid));return s;}return null;}public PageUtil getPageUtil(int currentPage, int pageSize,SystemUser systemUser) {Document doc = XmlUtil.getDocument();StringBuffer sb = new StringBuffer("/users/user");//设置查询参数if(systemUser != null && systemUser.getUsername() != null && "".equals(systemUser.getUsername().trim())){sb.append("[username="+systemUser.getUsername()+"]");}//查找xml有多少组元素List<Element> eles = doc.selectNodes(sb.toString());//把该容器换成List<SystemUser>List<SystemUser> list = new ArrayList<SystemUser>();for(Element ele : eles){String userid = ele.attributeValue("userid");String username = ele.elementText("username");String pwd = ele.elementText("pwd");String birthday = ele.elementText("birthday");systemUser = new SystemUser(username,pwd,birthday);systemUser.setUserid(Integer.valueOf(userid));list.add(systemUser);}//第1页取2条   0,1(不包括2,由end计算)//第2页取2条   2,3int start = (currentPage - 1) * pageSize;//2 分页不包括2int end = currentPage * pageSize;end = end > list.size() ? list.size() : end;List<SystemUser> subList = list.subList(start, end);return new PageUtil(currentPage,list.size(),subList,pageSize);}public void update(SystemUser systemUser) {Document doc = XmlUtil.getDocument();//先找到有没有该元素Element userEle = (Element) doc.selectSingleNode("/users/user[@userid="+systemUser.getUserid()+"]");//获取userEle的子元素Element nameEle = userEle.element("username");nameEle.setText(systemUser.getUsername());Element pwdEle = userEle.element("pwd");pwdEle.setText(systemUser.getPwd());Element birEle = userEle.element("birthday");birEle.setText(systemUser.getBirthday());XmlUtil.writeXML(doc);}public static void main(String[] args) {SystemUserDao dao = new SystemUserDao();//SystemUser s = new SystemUser("b","b","b");//s.setUserid(3);//dao.add(s); //dao.delete(3);//PageUtil pageUtil = dao.getPageUtil(2, 2, null);//for(int x = 0; x < pageUtil.getList().size() ; x++){//SystemUser s = (SystemUser) pageUtil.getList().get(x);//System.out.println(s.getUserid());//}SystemUser user = dao.get("张三");System.out.println(user.getUserid());System.out.println(user.getBirthday());System.out.println(user.getPwd());System.out.println(user.getUsername());}public SystemUser login(String username) {return this.get(username);}}


0 0