使用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>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章