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;
}