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