利用Dom4j+xpath读取XML文档

来源:互联网 发布:淘宝网太极裤 编辑:程序博客网 时间:2024/05/16 05:46

   使用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("/学生列表/学生[姓名='郭靖' and 密码='123']");

       if(student!=null){

           System.out.println("登陆成功");

       }else{

           System.out.println("姓名或密码错误");

       }  

    }



0 0