XPath语法使用的一些心得
来源:互联网 发布:触摸屏播放软件 编辑:程序博客网 时间:2024/06/05 09:41
XPath 语法在对dom对象的选择搜索上是很有用的,网上也有很多关于XPath的语法使用介绍,但是都大致相同,其实主要的搜索可以分为三个方面,(1)对节点的搜索,(2)对节点元素的搜索,(3)对节点属性的搜索为了说明方便,先展示一个dom的树形图 针对此图,我们用XPath语法来说说搜索遍历的写法,如有错误,请各位wi友批评指正。
<?xml version="1.0"?>
<navi>
<navi prikey="SQ">
<name text="A级" value="yhl_aj"/>
<name text="B级" value="yhl_bj"/>
</navi>
<navi prikey="SB">
<name text="B级" value="bzl_bj"/>
</navi>
</navi>
1)对节点的搜索对于节点的搜索只需遵循一个原则,将搜索路径定位到你要找的那个节点路径,写法形如:"..father/father 's father/father/I want"。比如我要找name节点,我就类似的这么写XPath:"/navi/navi/name",你要找name节点,所以就定位到/name就行了,但是你看图的话就会你找到了三个符合条件的节点,也许你只想找<name text="B级" value="bzl_bj"/>这个节点,那就加一些条件比如你可以这么写XPath:"/navi/navi[@prikey=/'SB/']/name",这种写法是通过限制父路径的条件,还有一种写法:"/navi/navi/name[@value=/'bzl_bj/']",这种写法是通过name本身的特性来限制。但是无论怎么写,想找那个节点,先在xml的路径上定位它,然后用刚刚说过的两种方法进行唯一性的刷选。不管那个层次的节点都是类似的。
2)对节点元素的搜索对节点元素的搜索也只需遵循一个原则,先定位到这个元素所在的节点,然后加上//元素名.写法形如:"..father/this node//I want".此处如果把name都看成navi的元素,那么对这些name元素的搜索可以如此定位"/navi/navi//name",前部分对于节点的定位无需赘述,如果在想进一步定位你想要的哪个name,只需类似这么写"/navi/navi//name[@value=/'bzl_bj/']", So Easy!!!如果要从这个dom中寻找,那么前半部分的节点路径就不需要了,直接这么写:"//name[@value='****']"
3)对属性的搜索对元素的属性搜索也是很简单的,写法形如:"..father/this Element//@I want"。比如你想搜<name text="B级" value="bzl_bj"/>的text属性,只需写"/navi/navi[@prikey=/'SB/']/name//@text"。如果你想从这个dom对象里搜索,就这么写"//@text",那么得到的就是一个text集合数组了。这些都是作为参数放到selectNodes(**)或者selectSingleNode(**),就能得到你想要的了。
总之一句话:"一杠节点两杠元素,加个@属性随我赋"。
<?xml version="1.0"?>
<navi>
<navi prikey="SQ">
<name text="A级" value="yhl_aj"/>
<name text="B级" value="yhl_bj"/>
</navi>
<navi prikey="SB">
<name text="B级" value="bzl_bj"/>
</navi>
</navi>
1)对节点的搜索对于节点的搜索只需遵循一个原则,将搜索路径定位到你要找的那个节点路径,写法形如:"..father/father 's father/father/I want"。比如我要找name节点,我就类似的这么写XPath:"/navi/navi/name",你要找name节点,所以就定位到/name就行了,但是你看图的话就会你找到了三个符合条件的节点,也许你只想找<name text="B级" value="bzl_bj"/>这个节点,那就加一些条件比如你可以这么写XPath:"/navi/navi[@prikey=/'SB/']/name",这种写法是通过限制父路径的条件,还有一种写法:"/navi/navi/name[@value=/'bzl_bj/']",这种写法是通过name本身的特性来限制。但是无论怎么写,想找那个节点,先在xml的路径上定位它,然后用刚刚说过的两种方法进行唯一性的刷选。不管那个层次的节点都是类似的。
2)对节点元素的搜索对节点元素的搜索也只需遵循一个原则,先定位到这个元素所在的节点,然后加上//元素名.写法形如:"..father/this node//I want".此处如果把name都看成navi的元素,那么对这些name元素的搜索可以如此定位"/navi/navi//name",前部分对于节点的定位无需赘述,如果在想进一步定位你想要的哪个name,只需类似这么写"/navi/navi//name[@value=/'bzl_bj/']", So Easy!!!如果要从这个dom中寻找,那么前半部分的节点路径就不需要了,直接这么写:"//name[@value='****']"
3)对属性的搜索对元素的属性搜索也是很简单的,写法形如:"..father/this Element//@I want"。比如你想搜<name text="B级" value="bzl_bj"/>的text属性,只需写"/navi/navi[@prikey=/'SB/']/name//@text"。如果你想从这个dom对象里搜索,就这么写"//@text",那么得到的就是一个text集合数组了。这些都是作为参数放到selectNodes(**)或者selectSingleNode(**),就能得到你想要的了。
总之一句话:"一杠节点两杠元素,加个@属性随我赋"。
- XPath语法使用的一些心得
- XPATH的一些资料(xpath的语法)
- XML中Xpath语法的使用
- xpath使用语法
- XPath的语法
- xpath的简明语法
- XPath的语法
- java的xpath语法
- xpath的简明语法
- XPath的语法
- xpath的语法
- XPath的简单语法
- XPath的语法
- XPath的语法
- xpath的语法
- dom4j的XPATH语法
- Xpath的语法
- java的xpath语法
- 解决java+ajax的乱码问题
- .NET Framework中的计时器对象
- 怎样把Exception的printStackTrace()打印到文件里
- linux下面的pipe命令
- Hibernate-Oralce10g里lob操作
- XPath语法使用的一些心得
- WEB开发人员必备工具-Mutiple-IE
- eWebEditor不能实现远程文件自动上传的解决方法
- Database Normalization Basics
- 构造函数初始化成员变量问题
- Java web中servlet中文乱码问题
- AJAX消息提示-Alert
- C# 线程处理教程
- SJDFLIAS FOIAS FLSA FHLI F