XPath

1.IE浏览器实现的xpath

var xmlDom = getXMLDOM("<root><user>Lee</user></root>");

var node = xmlDom.selectSingleNode("root/user");  //查找到多个,返回第一个


2. XPath常用语法

var node = xmlDom.selectSingleNode("root/user[2]");   //选择第二个

var node = xmlDom.selectSingleNode("root/user/text()");   //获取文本

var node = xmlDom.selectSingleNode("//user");   //不关心层次

var node = xmlDom.selectSingleNode("root//user");   //root下不关系层次

var node = xmlDom.selectSingleNode("root/user@id=5"); //属性匹配

 

var node = xmlDom.selectSingleNodes("root/user@id=5"); //返回多个node


3. W3C XPath常用语法

var eva = new XPathEvaluator();

var result = eva.evaluate("root/user[1]", xmlDom, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null);  //w3c下标从1开始

if (resullt != null) {

alert(result.singleNodeValue);  //选择匹配的第一个节点

}


var result = xmlDom.evaluate("root/user[1]", xmlDom, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null); 

if (resullt != null) {

alert(result.singleNodeValue);  //第二种方式

}

var result = xmlDom.evaluate("root/user[1]", xmlDom, null, XPathResult.FIRST_ITERATOR_NODE_TYPE, null); 

if (resullt != null) {

var node = result.iterateNext;

while(node != null) {

alert(node);   //多返回节点访问

}

}


4. 跨浏览器兼容XPath

function selectSingleNode(xmlDom, xpath) {

var node = null;

if (typeof xmlDom.evaluate != "undefined") {

var pattern = /\[\d+\]/

result  = pattern.match(xpath);

if (result != null) {

num = parseInt(RegExp.$1) +1;

xpath = xpath.repalce(pattern, [" + num+"]");

}

var result = xmlDom.evaluate("root/user[1]", xmlDom, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null); 

if (resullt != null) {

node = result.singleNodeValue;

}

} else if (typeof xmlDom.selectSingleNode != "undefined") {

node = xmlDom.selectSingleNode(xpath);

}

return node;

}







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值