Dom4j 与 Xpath

学习使用Xpth。前提注意除了需要dom4j包,还需要jaxen-xxxx.jar包,负责使用Xpath时会报错。

User.xml如下:

 

<users>
	<user id="1">
		<username>admin</username>
		<password>admin</password>
		<userType>0</userType>
		<createTime></createTime>
		<lastLoginTime></lastLoginTime>
		<isDelete>0</isDelete>
	</user>
</users>

我这里使用Dom4j获取Document两种方法

1通过文件名找

 

    public Document read(String fileName) throws MalformedURLException, DocumentException 
    {
        SAXReader reader = new  SAXReader();
        Document document = reader.read(new File(fileName));
        return document;
    }

 2通过流

 

InputStream input = this.getClass().getClassLoader().getResourceAsStream(Users.xml)

 

    public Document read(InputStream inputStream) throws DocumentException 
    {
        SAXReader reader = new  SAXReader();
        Document document = reader.read(inputStream);
        return document;
    }
 


通过用户名密码查找用户,查找user下的username与password的子节点

 

Element node = (Element) doc.selectSingleNode("//user[username = '"+ username +"' and password = '"+ password +"']");

这里值得注意的有两点,字符串对象需要单引号。Dom4j的Node对象可以直接转换为Element对象。

 

通过id查找用户,使用属性查找

 

 Element element = (Element) doc.selectSingleNode("//user[@id = "+ id +"]");
 

其中Xpath的规则可以参考http://www.w3school.com.cn/xpath/index.asp

 

注:在使用dom4j输出xml的时候,使用XMLWriter(Writer writer,OutputFormat format)可能在某些系统中导出输出中文错误(我遇到的情况是在64位系统中)。应该改为使用XMLWriter(FileOutputStream,OutputFormat format)。

 

        try 
        {
            //输出xml操作
            writer = new org.dom4j.io.XMLWriter(new FileOutputStream(url),format);
//          writer= new XMLWriter(new FileWriter(new File(url)),format);    //输出中文会导致乱码
            writer.write(doc);
            writer.close(); 
        } 
        catch (Exception e) 
        {
          
          e.printStackTrace();
        }
 

 

 

写给自己学习用,持续更新。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值