在使用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>