首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 开源 FAQ 第二书店 博文视点 程序员
频道: 研发 数据库 中间件 信息化 视频 .NET Java 游戏 移动 服务: 人才 外包 培训
    图书品种:235680
       
热门搜索: ASP.NET Ajax Spring Hibernate Java

4.2.6  跨浏览器兼容的XPath

本书作者开发的zXml库通过一个公共接口提供了跨浏览器兼容的XPath功能。负责提供XPath功能的对象是zXPath,该对象包含两个方法。

第一个方法是selectSingleNode()。该方法与IE方法同名,返回与模式匹配的第一个节点。与IE实现不同的是,该方法接受三个参数:上下文节点、XPath表达式字符串以及包含命名空间声明的字符串。命名空间字符串的格式如下所示:

"xmlns:na='http://site1.com' xmlns:pub='http://site2.com'

    xmlns:ns='http://site3.com'"

如果文档没有命名空间,那么selectSingleNode()方法只需要前两个参数。

selectSingleNode()方法所返回的结果是所选中的XML节点,或者没有查到匹配项时将为null。如果浏览器不支持XPath,那么会抛出错误,声明浏览器没有安装XPath引擎。下面这个例子将基于文档元素来执行XPath表达式:

var oRoot = oXmlDom.documentElement;

var oNode = zXPath.selectSingleNode(oRoot, "book/author", null);

 

if (oNode) {

    alert(oNode.xml);

}

该例子从文档根节点的上下文中查找<book/>元素中的第一个<author/>元素。如果找到,就在警告框中显示序列化后的XML数据。

zXPath的第二个方法是selectNodes(),该方法与IEselectNodes()方法相当类似,而且都是返回节点集合。该方法的语法与上面的selectSingleNode()方法很接近,同样的参数,同样的命名空间规则,并且当浏览器没有安装XPath引擎时,也将抛出同样的错误提示。下面的例子演示了selectNodes()方法的使用:

var sNameSpace = "xmlns:na='http://site1.com' xmlns:pub='http://site2.com'";

var oRoot = oXmlDom.documentElement;

var sXPath = "na:book/pub:name";

var oNodes = zXPath.selectNodes(oRoot, sXPath, sNameSpace);

 

if (oNodes.length > 0) {

    alert(oNodes.length);

}

这个例子与selectSingleNode()的例子相当类似,都是查找文档中包含命名空间的所有作者元素。如果结果集合个数大于0,那么显示结果的个数。

XPath是一个强大的工具,可以在XML文档中遍历并选择特定的节点,尽管设计者最初并没有考虑将其作为一个独立的工具。相反,XPath只是为XSLT(可扩展样式表语言转换)所创建。

查看所有评论(0)条】

最近评论



正在载入评论列表...
热点评论