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