使用dom4j实现读取和写入xml文件

在使用dom4j时,需要导入dong4j的jar包以及依赖包。
分别为:dom4j-1.6.1.jar与jaxen-1.1.6.jar
以下为相关代码
需要创建User类javabean对象
对象含有属性password与username

    package cn.yellowimg.dao;
    import java.io.FileOutputStream;
    import java.io.OutputStreamWriter;
    import org.dom4j.Document;
    import org.dom4j.DocumentException;
    import org.dom4j.Element;
    import org.dom4j.io.OutputFormat;
    import org.dom4j.io.SAXReader;
    import org.dom4j.io.XMLWriter;
    import cn.yellowimg.domain.User;
public class UserDao {

private String pathString="D:/users.xml";//依赖数据文件
/*
 * 
 * 按用户名查找
 */
public User findByUsername(String username)
{
    /*
     * 得到Document
     * xpath查询
     * 效验查询结果是否null 如果为null 返回null
     * 如果不会null,则把Element封装到User对象中
     */

    //创建解析器
    SAXReader reader=new SAXReader();
    try 
    {
        Document doc=reader.read(pathString);
        /*
         * 通过xpath查询得到element
         * 根节点为user
         * 加入对应的username存在
         * 则将xml文档中username与password属性写到User对象中
         */
        Element element=(Element)doc.selectSingleNode("//user[@username='"+username+"']");

        if(element==null) return null;

        User user=new User();

        user.setUsername(element.attributeValue("username"));

        user.setPassword(element.attributeValue("password"));

        return user;
    } 
    catch (DocumentException e) 
    {
        throw new RuntimeException(e);
    }
}

/*
 * 
 * 添加用户
 */
public void add(User user)
{
    /*
     * 得到Document
     * 通过Document获得root元素
     * 使用user,转换成Element对象
     * 把element添加到root元素中
     * 保存到Document中
     */
    SAXReader reader=new SAXReader();

    try 
    {
        Document document=reader.read(pathString);
        //得到根元素
        Element root=document.getRootElement();
        //通过根元素创建新元素
        Element userElement=root.addElement("user");
        //为userElement设置属性
        userElement.addAttribute("username", user.getUsername());
        userElement.addAttribute("password", user.getPassword());

        /* 
         * 保存文档
         */
        //缩进使用/t 使用换行 格式化器
        OutputFormat outputFormat=new OutputFormat("\t",true);

        //清空原有换行缩进
        outputFormat.setTrimText(true);

        //创建XmlWriter
        XMLWriter xmlWriter;
        try
        {
            xmlWriter=new XMLWriter(
                    new OutputStreamWriter(new FileOutputStream(pathString)
                            ,"utf-8"), outputFormat);
            xmlWriter.write(document);
            xmlWriter.close();
        }
        catch(Exception e)
        {
            throw new RuntimeException(e);
        }
    } 
    catch (DocumentException e) 
    {
        throw new RuntimeException(e);
    }
}
}

对应的xml文档格式为

<users>
    <user username="" password=""/>
</users>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值