之前的帖子中,提到了“XPath 轴(XPath Axes)”的概念,在使用 XPath 的过程中,采用灵活的相对路径可以很大程度上提高导航的性能和速度,而“XPath 轴”正是 XPath 相对路径的核心内容。
<a>
<b id="1">aaa</b>
<b id="2">
<sub></sub>
</b>
<x>
<b id="3">ccc</b>
</x>
<b id="4">ddd</b>
<y>
<b id="5">
<sub></sub>
</b>
</y>
<b id="6">
<sub></sub>
</b>
</a>
在上面的 XML 中,我们试图得到某个名称为 b 的节点的 id,我们假定此节点是位于 id 为 3 的 b 节点之后的第一个含有<sub></sub>子元素的节点。通过目测,可以看出,我们要找的节点正是 id 为 5 的 b 节点。那么如何得到这个 5 呢?
如果不使用相对路径,我们通常会采用从头遍历所有含有<sub></sub>子元素的 b 节点的方式,直到找到“位于 id 为 3 的 b 节点之后的第一个”。如果正是一个非常庞大的 XML,遍历全部肯定不是明智的选择。那么,我们不妨直接从 id 为 3 的 b 节点开始找吧! Roll Eyes
请看以下代码:
……
VTDNav vn = vg.getNav();
AutoPilot ap = new AutoPilot(vn);
ap.selectXPath("//b[@id='3']"); // 先导航到 id 为 3 的 b 节点
if (ap.evalXPath() != -1) {
ap.resetXPath();
ap.selectXPath("following::b[sub]"); // 当前节点的结束标签之后的所有节点中,名称为b 并且含有<sub>子元素的节点
if (ap.evalXPath() != -1) {
int idIndex = vn.getAttrVal("id");
System.out.println("id: " + vn.toNormalizedString(idIndex)); //
}
}
……
输出结果:
id: 5
其中,following:选取文档中当前节点的结束标签之后的所有节点。
类似的,preceding:选取文档中当前节点的开始标签之前的所有节点。
其他“XPath 轴”的内容,详见:
http://www.w3school.com.cn/xpath/xpath_axes.asp
分享到:
相关推荐
vtd-xml vtd-xml vtd-xml vtd-xml
vtd-xml源码+例程,方便快捷入门,里面包含有vtd-xml的c++源码
VTD-XML instruction.
官网上下载的VTD-XML-c源码 ,经过vs2013编译生成lib文件,将lib导入工程即可使用VS来解析svg或xml
VTD-XML 是一种基于 Java* 的新型开放源代码 XML 处理 API,能够解决当前 XML 处理模型的许多问题。此方案目前属于 Sourceforge* 一部分,可在此处*找到。通过本演示*,您将熟悉这些基本的概念。仅凭这一点,我们还...
新兴的XML处理工具,多快好省地建设社会主义。
vtd-xml example contains detailed example
vtd-xml解析技术相关资料以及相关的代码示例demo vtd-xml是一种xml解析技术,效率高于dom和sax解析方式
VTD-XML-示例使用 VTD-XML 解析器与 volley 并与 pull 解析器进行比较的示例。
vtd-xml+教程+源码+事例+集合
vtd-xml+教程+源码+事例+集合, 是一种新型的xml解析方法! 网上的教程不是很多!搜集了一些!
ximpleware_2.6_java.zip VTD-XML:随机访问能力,高性能,低内存占用率,相比于DOM和SAX有着本质和全面的改进.
基于多核处理器的VTD-XML解析性能优化.pdf
网上vtd的使用资料比较少,可能是太简单了没人想写吧。自己写的Demo,对VTDNav、AutoPilot进一步进行封装,从而简化解析代码,仅供参考 上传后才发现上传的demo.xml错了,貌似无法重新上传,内容应该是 <?xml ...
通常当我们提起XML的使用时,最头痛的部分便是XML的verbosity与XML的解析速度,当需要处理大XML文件时这个问题便变得格外严重。我在这里提及的,便是如何优化XML处理速度的话题。
NULL 博文链接:https://lfl2011.iteye.com/blog/2196102
基于多核处理器的VTD-XML节点查询执行性能优化.pdf
把VTD-XML和一些流行的XML解析器就性能和内存使用方面作一比较。通过时延和吞吐率来呈现XML解析性能。...大大提高了内存使用效率,意味着VTD-XML可以用来处理大的XML文件。各种大小的XML文件都能得到性能方面的好处。
VTD-XML是下一代XML解析器/索引器/编辑器/切片器/汇编器/ xpath引擎,在性能,内存使用和易用性方面超越了DOM,SAX和PULL。
介绍VTD-XML,XML处理的未来