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

XmlUtils.java 

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文件的工具类
XmlUtils.java 

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",format );
        writer.write( document );
        writer.close();
    }

}

3:用户登录的Dao

UserDao .java

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:用户登录的实现类

 
 

UserDaoImpl .java

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:用户登录的测试

UserDaoTest.java

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");

} }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念
xml文件介绍及使用
xml编程(一)-xml语法
XML文件结构和基本语法
第2章 包装类
XML入门的常见问题(二)
Java对象的强、软、弱和虚引用
JS解析XML文件和XML字符串详解
java中枚举的详细使用介绍
了解Xml格式
XML入门的常见问题(四)
深入SQLite多线程的使用总结详解
PlayFramework完整实现一个APP(一)
XML和YAML的使用方法
XML轻松学习总节篇