XPath目的就是为了在匹配XML文档结构树时能够准确地找到某一个节点元素。可以把XPath比作文件管理路径:通过文件管理路径,可以按照一定的规则查找到所需要的文件;同样,依据XPath所制定的规则,也可以很方便地找到XML结构文档树中的任何一个节点.
//example.xml
<?xml version="1.0" encoding="UTF-8"?>
<A id="a1">
<B id="b1">
<Cid="c1">
<Bname="b">B1</B>
<B name=" b">B2</B>
<D id="d1"/>
<Eid="e1">e1</E>
<Eid="e2">e2</E>
<Eid="e3">e3</E>
<Eid="e4">e4</E>
<Eid="e5">e5</E>
<WF/>
</C>
</B>
<Bid="b2">B4</B>
<Vid="c2">
<B/>
<D id="d2">this's a D</D>
<F/>
</V>
<E>e6</E>
<E>e7</E>
</A>
<A id="a1">
//testXpath.htm
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01Transitional//EN" "
http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>TestXpath</title>
</head>
<body>
<script type="text/javascript">
function createDomDoc()
{
var flag = [
"Msxml2.DOMDocument.5.0",
"Msxml2.DOMDocument.4.0",
"Msxml2.DOMDocument.3.0",
"Msxml2.DOMDocument",
"Microsoft.XmlDom"
];
for(var i =0;i<flag.length;i++)
{
try{
var domDoc
= new ActiveXObject(flag[i]);
return domDoc;
}catch(e){}
}
return null;
}
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>TestXpath</title>
</head>
<body>
<script type="text/javascript">
function createDomDoc()
{
return null;
}
var xmlDoc = createDomDoc();
if(xmlDoc!=null)
{
//查找所有的"B"
//
//选择所有的有3个祖先元素的B元素
xpath ="/*/*/*/B" ;
//
选择所有父元素是DDD的BBB元素
xpath="//C/D";
// 选择A/B/C的第一个E子元素
xpath="/A/B/C/E[1]";
// 选择A/B/C的第一个E子元素
//选择A/B/C的最后一个E子元素
xpath="/A/B/C/E[last()]" ;
//选择有name属性的B元素
xpath = "//B[@name]" ;
//选择有name属性的B元素
xpath="//B[normalize-space(@name)='b']";
//选择含有2个B子元素的元素
xpath="//*[count(B)=2]";
xpath="//*[count(B)=2]";
//选择含有3个子元素的元素
xpath="//*[count(*)=3]";
xpath="//*[count(*)=3]";
//选择所有名称为B的元素(这里等价于//B)
xpath="//*[name()='B']";
xpath="//*[name()='B']";
//选择所有名称以"W"起始的元素
xpath="//*[starts-with(name(),'W')]";
xpath="//*[starts-with(name(),'W')]";
//选择所有名称包含"W"的元素
xpath="//*[contains(name(),'W')]";
xpath="//*[contains(name(),'W')]";
//选择名字长度为2(大于、小于)的元素;
xpath="//*[string-length(name()) = 2]";
xpath="//*[string-length(name()) < 2]";
xpath="//*[string-length(name()) > 1]";
xpath="//*[string-length(name()) = 2]";
xpath="//*[string-length(name()) < 2]";
xpath="//*[string-length(name()) > 1]";
//多个路径可以用分隔符 |合并在一起,可以合并的路径数目没有限制,选择所有的WF和C元素
xpath="//WF | //C";
xpath="//WF | //C";
//等价于/A
xpath="/child::A";
xpath="/child::A";
//等价于//C/D
xpath="//child::C/child::D";
//选择文档根元素的所有后代.即所有的元素被选择
xpath="/descendant::*";
//选择/A/C的所有后代元素
xpath="/A/C/descendant::*";
xpath="//child::C/child::D";
//选择文档根元素的所有后代.即所有的元素被选择
xpath="/descendant::*";
//选择/A/C的所有后代元素
xpath="/A/C/descendant::*";
//选择D元素的所有父节点
xpath="//D/parent::*";
xpath="//D/parent::*";
//选择WF元素的祖先节点
xpath="//WF/ancestor::*";
xpath="//WF/ancestor::*";
//包含上下文节点之后的所有兄弟节点(此节点之后的所有兄弟节点)
xpath="//WF/following-sibling::*";
//包含上下文节点之前的所有兄弟节点(此节点之前的所有兄弟节点)
xpath="//WF/preceding-sibling::*";
xpath="//WF/following-sibling::*";
//包含上下文节点之前的所有兄弟节点(此节点之前的所有兄弟节点)
xpath="//WF/preceding-sibling::*";
//包含同一文档中按文档顺序位于上下文节点 之后 的所有节点,除了祖先节点,属性节点和命名空间节点
xpath="/A/B/following::*";
xpath="//B/following::*";
xpath="/A/B/following::*";
xpath="//B/following::*";
//包含同一文档中按文档顺序位于上下文节点之前的所有节点,除了祖先节点,属性节点和命名空间节点
xpath="//WF/preceding::*";
xpath="//WF/preceding::*";
//包含上下文节点本身和该节点的后代节点;
xpath="//C/descendant-or-self::*";
xpath="//C/descendant-or-self::*";
//仅代表自身节点
xpath="//A/self::*";
xpath="//A/self::*";
//一起使用则包含所有节点
xpath="//WF/ancestor::* | //Wf/descendant::* | //WF/following::* |//WF/preceding::* | //WF/self::*";
xpath="//WF/ancestor::* | //Wf/descendant::* | //WF/following::* |//WF/preceding::* | //WF/self::*";
//选择当前节点的文字
xpath="//E/child::text()";
xpath="//E/child::text()";
//选择所有当前节点的子节点
xpath="//V/child::node()";
xpath="//V/child::node()";
//选择偶数位置的B元素
xpath="//B[position() mod 2 = 0 ]";
//选择中间的E元素
/*
div运算符做浮点除法运算,
mod运算符做求余运算,
floor函数返回不大于参数的最大整数(趋近于正无穷),
ceiling返回不小于参数的最小整数(趋近于负无穷) */
xpath="//E[ position() = floor(last() div 2 + 0.5) or position() =ceiling(last() div 2 + 0.5) ]";
xpath="//B[position() mod 2 = 0 ]";
//选择中间的E元素
/*
div运算符做浮点除法运算,
mod运算符做求余运算,
floor函数返回不大于参数的最大整数(趋近于正无穷),
ceiling返回不小于参数的最小整数(趋近于负无穷) */
xpath="//E[ position() = floor(last() div 2 + 0.5) or position() =ceiling(last() div 2 + 0.5) ]";
//可以忽略空白,寻找属性name='b' or name=' b '的元素
xpath=" //@name['b']";
xpath=" //@name['b']";
//不忽略空白,完全匹配,寻找属性name='b'的元素
xpath=" //@name[.='b']";
xpath=" //@name[.='b']";
//
}
else
{
alert("请使用IE进行测试");
}
else
{
}
</script>
</body>
</html>
</body>
</html>