XML操作举例→实现用户登录

package cn.zyw.utils; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.UnsupportedEncodingException; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.io.OutputFormat; import org.dom4j.io.SAXReader; import org.dom4j.io.XMLWriter; //3 public class XmlUtils { private static String filepath; static{ filepath=XmlUtils.class.getClassLoader().getResource("users.xml").getPath(); filepath=filepath.replace("%20", " "); } public static Document getDocument() throws Exception{ SAXReader reader = new SAXReader(); Document document = reader.read(new File(filepath)); return document; } public static void write2Xml(Document document) throws Exception{ OutputFormat format = OutputFormat.createPrettyPrint(); format.setEncoding("UTF-8"); XMLWriter writer = new XMLWriter(new FileOutputStream(filepath), format ); writer.write( document ); writer.close(); } }
有时我们想做做一个小的项目需要保存一定的数据,如果用数据库当然是可以的。但是总觉得有点浪费资源。所以今天就学习了一点Xml总结如下:
1:Xml文件如下:

<?xml version="1.0" encoding="UTF-8"?> <users> <user id="234343434" username="aaa" password="123" email="aa@sina.com" birthday="1900-09-18" nickname="强子" /> </users>
2:操作Xml文件的工具类

package cn.zyw.utils; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.UnsupportedEncodingException; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.io.OutputFormat; import org.dom4j.io.SAXReader; import org.dom4j.io.XMLWriter; //3 public class XmlUtils { private static String filepath; static{ filepath=XmlUtils.class.getClassLoader().getResource("users.xml").getPath(); filepath=filepath.replace("%20", " "); } public static Document getDocument() throws Exception{ SAXReader reader = new SAXReader(); Document document = reader.read(new File(filepath)); return document; } public static void write2Xml(Document document) throws Exception{ OutputFormat format = OutputFormat.createPrettyPrint(); format.setEncoding("UTF-8"); XMLWriter writer = new XMLWriter(new FileOutputStream(filepath), format ); writer.write( document ); writer.close(); } }
3:用户登录的Dao

package cn.zyw.dao; import cn.zyw.domain.User; //5 public interface UserDao { void add(User user); User find(String username, String password); //查找注册的用户是否在数据库中存在 boolean find(String username); }
4:用户登录的实现类

package cn.zyw.dao.impl; import java.text.SimpleDateFormat; import org.dom4j.Document; import org.dom4j.Element; import cn.zyw.dao.UserDao; import cn.zyw.domain.User; import cn.zyw.utils.XmlUtils; //2 public class UserDaoImpl implements UserDao { public void add(User user){ try { Document document=XmlUtils.getDocument(); Element root=document.getRootElement();//得到根节点 Element user_tag=root.addElement("user"); user_tag.setAttributeValue("id", user.getId()); user_tag.setAttributeValue("username", user.getUsername()); user_tag.setAttributeValue("password", user.getPassword()); user_tag.setAttributeValue("email", user.getEmail()); user_tag.setAttributeValue("nickname", user.getNickname()); user_tag.setAttributeValue("birthday", user.getBirthday()==null ? "" : user.getBirthday().toLocaleString()); XmlUtils.write2Xml(document); } catch (Exception e) { throw new RuntimeException(e); } } public User find(String username,String password){ try { Document document=XmlUtils.getDocument(); Element e=(Element) document.selectSingleNode("//user[@username='"+username+"' and @password='"+password+"']"); if(e==null) return null; User user=new User(); user.setUsername(e.attributeValue("username"));//获取xml里面的值 user.setNickname(e.attributeValue("nickname")); user.setPassword(e.attributeValue("password")); user.setEmail(e.attributeValue("email")); user.setId(e.attributeValue("id")); String date=e.attributeValue("birthday"); if(date==null || date.equals("")){ user.setBirthday(null); }else{ SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd"); user.setBirthday(df.parse(date)); } return user; } catch (Exception e) { throw new RuntimeException(e); } } //查找注册的用户是否在数据库中存在 public boolean find(String username){ try { Document document=XmlUtils.getDocument(); Element e=(Element) document.selectSingleNode("//user[@username='"+username+"']"); if(e==null){ return false; } return true; } catch (Exception e) { throw new RuntimeException(e); } } }
5:用户登录的测试

package junit.test; import java.util.Date; import org.junit.Test; import cn.zyw.dao.UserDao; import cn.zyw.dao.impl.UserDaoImpl; import cn.zyw.domain.User; //4 public class UserDaoTest { @Test public void testAdd(){ User user=new User(); user.setBirthday(new Date()); user.setEmail("aa@sina.com"); user.setId("34343434"); user.setNickname("李子"); user.setPassword("123"); user.setUsername("aaa"); UserDao dao=new UserDaoImpl(); dao.add(user); } @Test public void testFind(){ UserDao dao=new UserDaoImpl(); User user=dao.find("aaa","123"); String aa=user.getEmail(); if(aa.endsWith("kk")) { System.out.println("kkdf"); } } @Test public void testFindByUsername(){ UserDao dao=new UserDaoImpl(); boolean b=dao.find("aaa"); } }
不要让昨天的沮丧 让今天的梦想黯然失色
成功的人总是修改方法而不修改目标
微信公众号:javenlife
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?