您当前的位置: 首页 > 学无止境 > JS经典实例 网站首页JS经典实例
javascript学习笔记-XPath
发布时间:2018-04-05 18:22:15编辑:雪饮阅读()
通过w3c提供的XpathEvaluator进行xpath查询单一节点
var xmlParser=new DOMParser();
var xmlStr="<root><user>杜敏捷</user><love>雪饮</love></root>";
var xmlDom=xmlParser.parseFromString(xmlStr,"text/xml");
//构建XPathResult对象
var eva = new XPathEvaluator();
/*
参数1:xpath查询表达式
参数2:上下文节点(xmlDom对象或该对象下某个元素)
参数3:命名空间求解器(通常是 null)
参数4:返回结果类型
参数5:保存结果的 XPathResult对象(通常是 null)。
参数1详细说明:
w3c中下标是从1开始的,当然如果表达式中没有指定下标,则默认为1
参数4详细说明:
XPathResult.FIRST_ORDERED_NODE_TYPE:返回只包含一个节点的节点集合,且这个节点是在文档中第一个匹配的节点.
*/
var result = eva.evaluate('root/user[1]',xmlDom,null,XPathResult.FIRST_ORDERED_NODE_TYPE,null);
alert(result.singleNodeValue.textContent);
也可以直接通过xmlDom执行evaluate来查询单一节点
var xmlParser=new DOMParser();
var xmlStr="<root><user>杜敏捷</user><love>雪饮</love></root>";
var xmlDom=xmlParser.parseFromString(xmlStr,"text/xml");
var result = xmlDom.evaluate('root/user[1]',xmlDom,null,XPathResult.FIRST_ORDERED_NODE_TYPE,null);
alert(result.singleNodeValue.textContent);
通过常量ORDERED_NODE_ITERATOR_TYPE结合xpath获取节点集合
var xmlParser=new DOMParser();
var xmlStr="<root><user>杜敏捷</user><love>雪饮</love><user>雪饮</user><love>杜敏捷</love></root>";
var xmlDom=xmlParser.parseFromString(xmlStr,"text/xml");
var result = xmlDom.evaluate('root/user',xmlDom,null,XPathResult.ORDERED_NODE_ITERATOR_TYPE,null);
//遍历迭代方法,可以抽取出集合
var nodes=[];
var node=result.iterateNext();
while(node != null){
nodes.push(node);
node=result.iterateNext();
}
console.log(nodes);
关键字词:javascript,xpath