ajax-Xpath
思韵闪耀
2018-01-26
0

xml方式在查询某一结点时不太方便,而Xpath提供了在XML文档中查找任意节点的解决方案
XPath表达式由两部分所组成:上下文节点和选择模式。
book[@isbn='0471777781'] 在book结点所有子结点中查找isbn属性为’0471777781′的作者元素
1,IE中的XPath
微软通过两种方法来实现基于XPath表达式的节点选择。
1)selectSingleNode()? 它将返回匹配表达式的第一个节点
var oFirstAuthor = oXmlDom.documentElement.selectSingleNode(“book/author”);
返回是documentElement的上下文中<book/>元素子节点的第一个<author/>元素
2)selectNode() 返回一个NodeList,它是所有与该XPath表达式匹配的节点集,要注意的一点是如果文档中没有相匹配的元素,那么还是会返回一个NodeList,只是长度为0。因此在使用NodeList前,最好先判断其长度是否大于0:

var cAuthors = oXmlDom.documentElement.selectNodes(“book/author”);
if (cAuthors.length > 0) {
//进行操作
}
2, Firefox中的XPath
Firefox的实现版本允许XPath表达式以相同方式在HTML和XML文档中运行。这里最主要的对象有两个:XPathEvaluator和XPathResult。
XPathEveluator类使用evaluate()方法对给定的XPath表达式进行求值,evaluate()方法包含五个参数:需要计算的XPath表达式字符串,表达式执行的上下文节点,命名空间解析器(处理表达式中命名空间的函数),结果类型(允许10种不同的结果类型)以及包含结果的XPathResult对象(如果参数为null,那么返回新的XPathResult对象)。
var oEvaluator = new XPathEvaluator();
var sXPath = “book/author”;
var oResult = oEvaluator.evaluate(sXPath,oXmlDom.documentElement,null,
XPathResult.ORDERED_NODE_ITERATOR_TYPE, null);
var aNodes = new Array;
if (oResult != null) {
var oElement;
while (oElement = oResult.iterateNext()) {
aNodes.push(oElement);
}
}
evalute()方法返回的不同结果类型:
XPathResult.ANY_TYPE,返回不确定类型。该方法返回的类型由表达式计算的结果决定。
XPathResult.ANY_UNORDERED_NODE_TYPE,返回通过singleNodeValue属性访问的某个节点的节点集合,如果没有匹配的节点,那么返回null。返回的节点集合不一定按出现的顺序排列。
XPathResult.BOOLEAN_TYPE,返回布尔值。
XPathResult.FIRST_ORDERED_NODE_TYPE,返回某个节点的节点集合。该节点使用XPathResult类的singleNodeValue属性访问。返回的节点是文档中第一个出现的节点。
XPathResult.NUMBER_TYPE,返回数字值。
XPathResult.ORDERED_NODE_ITERATOR_TYPE,返回文档顺序的节点集合(使用iterateNext()方法遍历)。因此,可以容易地访问集合中每个独立的节点。
XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,返回文档顺序的节点集合(结果集合的快照)。任何对文档中节点的修改都不影响结果。
XPathResult.STRING_TYPE,返回字符串值。
XPathResult.UNORDERED_NODE_ITERATOR_TYPE,返回可以遍历的节点集合,然而,节点的顺序与其在文档中出现的顺序不一定一致。
XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,返回无序快照节点集合。任何对文档中节点的修改都不影响结果。
最常用的结果类型是XPathResult.ORDERED_NODE_ITERATOR_TYPE:


【版权声明】
本站部分内容来源于互联网,本站不拥有所有权,不承担相关法律责任。如果发现本站有侵权的内容,欢迎发送邮件至masing@13sy.com 举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。

上一篇: EXTJS基本语法

下一篇: 宽度与高度

相关内容

docker-compos...
1.Compose介绍 DockerCompose是一个用来定义和...
2024-04-26
centos7 firew...
名词解释 在具体介绍zone之前学生先给大家介绍几个相关的名词,因...
2023-12-22
Docker的一系列操作(...
首先要清楚Redis是安装在Docker容器,所以要进行很长的Do...
2022-09-08
SQL Server常用升...
一、选择SQL Server升级方法 升级SQL Server的方...
2022-04-27
在 Windows服务器中...
本文介绍如何在 SMB 客户端和服务器组件上启用/禁用服务器消息块...
2022-04-01
修改域控制器的名称
05-修改域控制器的名称 1、背景 添加域控的从节点时,忘记修改机...
2022-03-03

热门资讯

Invalid left-ha... 写一个提交函数的时候,发现函数不生效,F12之后看到Invalid left-hand side i...
响应图片(Responsive... 一、开门见山 响应图片技术可以说是响应布局衍生出来的一个小分支。说白了,就是不同显示器宽度下调用不同...
轻松删除MetInfo CMS... 第一步:首页底部版权,模板文件foot直接删除; 第二部:首页头部generator版权,\publ...
ckplayer6.3如何替换... 1.刚打开播放器,视频在缓冲时播放器中间的LOGO怎么替换?(如下图) 2.视频播放器右上角的CK ...
inDensity,inTar... 如果接触Android中的Bitmap较深的话,肯定会知道标题上的这三个属性值,那么这三个属性值的关...
JS 验证 利用Javascript中每个对象(Object)的prototype属性我们可以为Javascri...
在文本框中输入时保证总是在最... 那就要在keypress时保证文本框的光标在尾部,而文本框value赋值后其光标默认在最后,故可采用...
微信UA Mozilla/5.0 (Linux; U; Android 2.3.6; zh-cn; GT-S5...
检测大写锁定键(Caps Lo... h1检测大写锁定键/h1form action="#" method="post" p label ...
iframe高度自适应,全屏,... !注意此方法用于同一个域名下,可能需要部署在服务器上才能看出效果 !DOCTYPE html PUB...