Dom4j中XPath相对路径的使用

Dom4j中XPath相对路径的使用

 

XPath是用来表达XML文档树各种元素的位置的描述。通过XPath直接获取文档元素比较准确,直接,效率也高。

  XPath的路径分相对的和绝对的,绝对路径以“/"开始,相对路径以“./”或直接以元素的名开头。


样例XML文件如下:

 


 

<?xml version = "1.0" encoding = "UTF-8"?>
<persons>
   <country>china</country>
   <city>zhengzhou</city>
   <person>
       <id>101</id>
       <name>zhangsan</name>
       <contacts>
               <email>zhangsan@yahoo.cn</email>
               <tel>0371-85555555</tel>
               <qq>6683965</qq>
       </contacts>
       <addresses>
          <address>
            <zipcode>450000</zipcode>
            <street>aaa</street>
          </address>
          <address>
            <zipcode>450001</zipcode>
            <street>bbb</street>
          </address>
       </addresses>
   </person>
   <person>
       <id>102</id>
       <name>lisi</name>
       <contacts>
          <email>lisi@yahoo.cn</email>
          <tel>0371-68554545</tel>
          <qq>224488</qq>
       </contacts>
       <addresses>
           <address>
              <zipcode>450002</zipcode>
              <street>xxx</street>
           </address>
           <address>
              <zipcode>450003</zipcode>
              <street>yyy</street>
           </address>
       </addresses>
   </person>
</persons>

 


 

 

测试Java代码如下:

 


 

import java.io.File;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.Element;

/**
* XML相对路径测试
*
* @author leizhimin 2010-1-6 11:10:54
*/
public class TestDom {
   public static void main(String[] args) {
    try {
        File xmlf = new File("D://person.xml");
        
        SAXReader reader = new SAXReader();
        Document doc = reader.read(xmlf);
        
        Element e_plan = (Element) doc.selectSingleNode("/persons");
        
        Element e_id = (Element) e_plan.selectSingleNode("./country");
        
        Element e_id1 = (Element) e_plan.selectSingleNode("country");
        
        List<Element> eplist = e_plan.selectNodes("/persons/person");
        for (Element ep : eplist) {
            String path = ep.getPath();
            Element id = (Element) ep.selectSingleNode("id");
            System.out.println(id.getText());
        }
        System.out.println("---------------");
    } catch (Exception e) {
        // TODO: handle exception
    }
   }
}


 



输出结果:

 


101
102
---------------

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值