js-XPath-1.1

 XPath是使用路径表达式来获取XML文档的节点和节点集。感觉跟正则表达式很相像。首先还是看代码吧,这样能保证我的代码能够正常执行。

    首先需要创建一个页面或者一个xml文件。为了访问,我是创建了一个正常的页面。

然后需要创建另一个界面,来访问这个界面,访问方法,请见获得其他网页内容。

    但请注意下面的方法传入的参数必须是XMLDocument的对象。如果是通过类似XMLHttpRequest的方式获得,可以获得responseText或responseXML的方式获得内容。但如果是responseText,结果就是字符串,这时候需要将字符串转换成XMLDocument的对象。

///获得接收到的网页数据的特定内容
///XMLDocumentObj: xmlDocument对象
///path: 查询的XPath路径
///disposeEveryNodeFunction:处理每个查询出的节点的函数,参数为每个查询出的节点
function getSpecialContent(XMLDocumentObj, path, disposeEveryNodeFunction) {
    if (window.ActiveXObject) {
        // code for IE
        XMLDocumentObj.setProperty("SelectionLanguage", "XPath");
        var nodes = XMLDocumentObj.selectNodes(path);
        for (i = 0; i < nodes.length; i++) {
            disposeEveryNodeFunction(nodes[i]);
        }
    } else if (document.implementation && document.implementation.createDocument) {
        // code for Mozilla, Firefox, Opera, etc.
        var nodes = XMLDocumentObj.evaluate(path, XMLDocumentObj, null, XPathResult.ANY_TYPE, null);
        var result = nodes.iterateNext();
        while (result) {
            disposeEveryNodeFunction(result);
            result = nodes.iterateNext();
        }
    }
}

//调用
getSpecialContent(xmlDocumentObj, "//h1[@id='productMainName']", function (node) {
    if (node.childNodes.length > 0) { 
        document.write(node.childNodes[0].nodeValue);
        document.write("<br>");
    }
});

然后,我们来看看语法吧,嘻嘻。

nodename选取此节点的所有子节点。
/从根节点选取。
//从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。
.选取当前节点。
..选取当前节点的父节点。
@选取属性。
::
/a/book[1]属于 a子元素的第一个 book 元素。
/a/book[last()]属于 a子元素的最后一个 book 元素。
/a/book[position()<3]最前面的两个属于 a元素的子元素的 book 元素。
//book[@lang]选取所有名为 lang 的属性的 book元素。
//book[@lang='eng']选取所有值为 eng 的 lang 属性的 book 元素
//book[price>1]选取所有的 price 元素的值大于 1 的 book 元素
attribute::lang选取当前节点的 lang 属性。
*匹配任何元素节点。
@*匹配任何属性节点。
node()匹配所有子节点。
text()匹配所有文本子节点。
|计算两个节点集
+ - * = != < <= > >=加法 减法 乘法 等于 不等于 小于 小于或等于 大于 大于或等于
div除法
or
and
mod计算除法的余数

    查到一个元素后,可以根据当前元素为轴查看相关,参数如下

ancestor所有先辈(父、祖父等)。
ancestor-or-self所有先辈(父、祖父等)以及当前节点本身。
attribute所有属性。
child所有子元素。
descendant所有后代元素。
descendant-or-self所有后代元素以及当前节点本身。
following文档中当前节点的结束标签之后的所有节点。
namespace当前节点的所有命名空间节点。
parent父节点。
preceding文档中当前节点的开始标签之前的所有节点。
preceding-sibling当前节点之前的所有同级节点。
self当前节点。

 除上述内容外,还有一些其它函数,详细参见:http://www.w3school.com.cn/xpath/xpath_functions.asp

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值