韩顺平XML学习7

来源:互联网 发布:中国第三季度经济数据 编辑:程序博客网 时间:2024/05/04 12:33

xpath的必要性

为了我们根据方便的访问的某个节点,我们可以使用xpath技术,当使用xpath后,就可以非常方便的读取到指定节点,xpath往往是结合dom4j一并使用.

说明:如果要使用xpath 则需要引入一个新的包

 

 

原理图:

 

 

特别说明:

 

//@id

选择所有的id属性


     <AAA> 
          <BBB id = "b1"/> 
          <BBB id = "b2"/> 
          <BBB name = "bbb"/> 
          <BBB/> 
     </AAA> 

 

如果我们通过 //@id 取回的节点类型是 Attribue,不是Element

用法:

//3.可以使用xpath随心读取

List e=document.selectNodes("//@id");//返回多个元素 

System.out.println(((Attribute)e.get(1)).getText());

 

注意:xpath 是可以任意组合:

比如:

<?xml version="1.0" encoding="utf-8"?>

<AAA> 

          <BBB id "b1">

          <CCC>

          <KKK>k2</KKK>

          </CCC>

          <CCC>

          <KKK>k1</KKK>

          </CCC>

          </BBB> 

          <BBB id "b2"/> 

          <BBB name "bbb"/> 

          <BBB/> 

     </AAA> 

要找到  <KKK>k2</KKK>

xpath 应该这样写 : /AAA/BBB[1]/CCC[1]/KKK

 

案例:

package five;

 

import java.util.List;

 

import org.dom4j.Document;

import org.dom4j.Element;

import org.dom4j.io.SAXReader;

 

public class XPath {

 

/**

 * dom4j配合xpath案例

 * @param args

 */

public static void main(String[] args)throws Exception {

 

//1,得到SAXReader解析器

SAXReader saxReader=new SAXReader();

//2,指定去解析哪个文件

Document document=saxReader.read("src/five/test.xml");

//3,可以使用xpath随心读取

List e=document.selectNodes("/AAA/BBB");//返回多个元素  document.selectSingleNode(arg0)返回一个元素

System.out.println(e.size());

List e1=document.selectNodes("//CCC");

System.out.println(((Element)e1.get(0)).getText().trim());

//父元素是BBBCCC

List e2=document.selectNodes("//BBB/CCC");

System.out.println(e2.size());

}

 

}

 

 

Xml

<?xml version="1.0" encoding="utf-8"?>

<AAA> 

          <BBB id = "b1">

            <CCC>

             sk

            </CCC>

          <CCC>

           <KKK>k2</KKK>

          </CCC>

          <CCC>

           <KKK>k1</KKK>

          </CCC>

          </BBB> 

          <BBB id = "b2"/> 

          <BBB name = "bbb"/> 

          <BBB/> 

          <CCC/>

</AAA> 

     

 

 

0 0
原创粉丝点击