您的位置:首页 > 其它

利用Dom4j+xpath读取XML文档

2014-05-10 15:29 417 查看
使用Dom4j 首先应该在工程包添加一个Jar包文件:dom4j-1.6.1.jar
然后创建XML读取器对象加载DOM树模型,具体代码如下:
 
//1.创建XML读取器对象  
SAXReader reader = new SAXReader();
         
//2.从类路径下面加载xml文件
InputStream in = XpathTest.class.getResourceAsStream("/cn/mytest/xpath/persom.xml");


 
// 3.读取xml文档,构建成Dom模型
Document document = reader.read(in);



.使用Xpath读取Dom树中的元素,这时需要在Java工程包中添加应外一个Jar包文件:jaxen-1.1-beta-6.jar ,这个文件在dom4j的lib目录下.

否则会出现NoClassDefFoundError.  具体代码如下:

         //4.用xpath的方式去查找节点,返回节点列表,selectNodes()方法中的参数为        

List <Node> nodeslist = document.selectNodes("//person[@id='003']");
for (Node n : nodeslist) 
{
System.out.println(n);
}


    

        //5.如果确定XML文档中只有一个节点的时候,就用selectSingleNode();

      

Node node= document.selectSingleNode("//person[@id='003']");
System.out.println(node);


三.具体案例

<?xmlversion="1.0"encoding="utf-8"?>
<学生列表>
  <学生学号="001">
    <姓名>郭靖</姓名> 
    <密码>123</密码>
    <性别>男</性别> 
    <年龄>30</年龄> 
    <师傅>江南七怪</师傅>
  </学生> 
  <学生学号="002">
    <姓名帮派="丐帮">黄蓉</姓名>
    <密码>456</密码>
 
    <性别>女</性别> 
    <年龄>20</年龄>
  </学生>
</学生列表>

1)查找所有学生的姓名

@Test
    publicvoid test1()throws
Exception{
       SAXReader reader =
new
SAXReader();
       Document doc = reader.read("src/student.xml");
       List<Element> eList =
doc.selectNodes("/学生列表/学生/姓名");
       for(Element e:eList){
           System.out.println(e.getText());
       }  
    }

2)查找姓名为“郭靖”、密码为“123”的学生

@Test
    publicvoid test2()throws
Exception{
       SAXReader reader =
new
SAXReader();
       Document doc = reader.read("src/student.xml");
       Element student = (Element)doc.selectSingleNode("/学生列表/<
af43
span style="color:#2A00FF;background:#FFFF00;">学生[姓名='郭靖'
and 密码='123']");
       if(student!=null){
           System.out.println("登陆成功");
       }else{
           System.out.println("姓名或密码错误");
       }  
    }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  xml xpath dom dom4j