`
weachy
  • 浏览: 9542 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

VTD-XML经验集锦之使用 XPath 进行相对定位,提高导航效率

    博客分类:
  • VTD
阅读更多

之前的帖子中,提到了“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是一种高效、灵活且轻量级的XML处理库,由Vivtek Data Systems公司开发。这个库专门设计用于解析、导航和修改XML文档...通过理解和熟练使用VTD-XML,开发者可以更有效地处理XML文档,提高应用程序的性能和效率。

    vtd-xml+教程+源码+事例+集合.zip

    VTD-XML是一个高效、轻量级的XML解析库,由AutoPilot公司开发,主要用于XML文档的随机访问和导航。本教程将深入探讨VTD-XML的核心概念、使用方法、源码分析以及实例应用,旨在帮助开发者更好地理解和运用这个强大的...

    vtd-xml XML解析工具

    VTD-XML是一款高效、灵活且功能强大的XML解析工具,由XimpleWare公司开发。它在XML处理领域中因其性能优异、内存占用低...通过学习和掌握VTD-XML,开发者可以更好地应对XML处理的挑战,提高代码的效率和项目的成功率。

    vtd-xml+教程+源码+事例+集合

    1. **教程**:由于网上关于VTD-XML的教程相对较少,这些教程将帮助开发者快速理解和掌握VTD-XML的基本用法,包括如何初始化XML解析器,如何通过索引进行XML节点的访问,以及如何执行XPath查询等。 2. **源码**:VTD...

    VTD-XML.zip_VTD_VTD-XML_instruction_zip

    在“VTD-XML.pdf”中,读者可能会学习到如何初始化VTD导航器、使用XPath表达式进行数据检索、如何创建和修改XML文档、以及如何处理命名空间等高级主题。此外,文档可能还会涵盖错误处理、性能优化和与其他XML技术...

    vtd-xml源码+例程

    无论是进行XML解析、操作还是生成,VTD-XML都能提供强大的支持,尤其是在处理大体积XML数据时,其内存效率和速度优势尤为突出。因此,花时间研究这个库的源码和例程,对于提升XML处理能力是非常有价值的。

    VTD-XML 不同于SAX和DOM的XML高效解析器

    在VTD-XML中,XPath查询可以与索引结合,进一步提高了查询效率。 4. **多语言实现**:VTD-XML不仅有Java版本,还有C语言实现,这意味着它可以在各种平台和环境中使用,包括嵌入式系统和移动设备。 5. **灵活性**:...

    vtd-xml example

    VTD-XML是一个高效、灵活且功能强大的XML处理库,由VTD-XML技术创始人Harold Abelson开发。它主要用于XML文档的随机访问、解析、导航和...对于需要处理大量XML数据的开发者来说,掌握VTD-XML可以显著提高效率和性能。

    VTD-XML c源码及vs2013编译生成的lib

    VTD-XML库以其基于变量的文档定位(Variable To Document)技术而闻名,它提供了对XML文档的强大导航、解析和操作功能,且性能优于DOM和SAX解析器。 VTD-XML库的核心理念是通过预处理XML文档并创建一个索引,使得...

    VTD-XML技术解析XML实例

    VTD-XML技术的核心是虚拟XML索引(Virtual Token Descriptor, VTD),这种索引能够在不加载整个XML文档到内存的情况下进行快速定位和处理。 XML(eXtensible Markup Language)是一种标记语言,广泛用于数据交换、...

    vtd-xml相关资料.zip

    2. **随机访问**:由于使用了索引,VTD-XML支持对XML文档的随机访问,可以方便地进行定位和操作,如修改、添加或删除XML元素。 3. **高性能**:VTD-XML的解析速度较快,尤其对于大型XML文档,其解析速度通常超过DOM...

    新兴XML处理方法VTD-XML介绍

    综上所述,VTD-XML通过其独特的非提取式解析模式解决了DOM和SAX中存在的效率瓶颈,不仅提高了XML处理的速度,而且降低了内存消耗,增强了易用性。随着XML技术在各行各业中的广泛应用,VTD-XML作为一种高效的XML处理...

    VTD-XML解析软件.zip

    相比传统的DOM(Document Object Model)和SAX(Simple API for XML)解析器,VTD-XML提供了一种全新的、随机访问XML文档的方法,这使得它在性能和内存效率上具有显著优势。 1. **随机访问能力**:VTD-XML的核心...

    VTD-XML-Example:使用 VTD-XML 解析器与 volley 并与 pull 解析器进行比较的示例

    本示例将探讨如何使用VTD-XML解析器与Volley协同工作,并将其与传统的Pull解析器进行对比。 首先,让我们了解VTD-XML。VTD(Virtual Token Descriptor)是VTD-XML的核心概念,它提供了一种高效的XML解析方法,通过...

    vtd-xml-2.6-java-src.rar_VTD-XML_www.vtd2cn_断词

    VTD-XML 是一种基于 Java* 的新型开放源代码 XML 处理 API,能够解决当前 XML 处理模型的许多问题。此方案目前属于 Sourceforge* 一部分,可在此处*找到。通过本演示*,您将熟悉这些基本的概念。仅凭这一点,我们还...

    VTD-XML: The Future of XML Processing-开源

    使用这样的库,开发者可以在Java项目中方便地集成XML处理功能,利用VTD-XML的强大特性来优化XML处理流程,提高程序的运行效率。 在实际应用中,VTD-XML可以用于XML数据的验证、转换、合并、分割等多种任务。例如,...

    基于多核处理器的VTD-XML节点查询执行性能优化.pdf

    【正文】 《基于多核处理器的VTD-XML节点查询执行性能优化》这篇论文主要探讨了在当前主流的多核处理器环境下,...通过采用VTD-XML和优化策略,可以在保证处理效率的同时,降低系统资源的消耗,提升系统的整体性能。

    VTD-XML:面向未来的XML处理(第一部分)

    2. **内存效率**:与DOM模型相比,VTD-XML在内存使用上更为优化,尤其适合处理大型XML文档。 3. **强大的XPath支持**:VTD-XML提供了完整的XPath 1.0支持,允许用户通过表达式轻松地查找和提取XML数据。 4. **XML...

    使用VTD-XML的无模式C#-XML数据绑定

    标题中的“使用VTD-XML的无模式C#-XML数据绑定”指的是在C#编程环境中,利用VTD-XML库实现的一种XML数据绑定技术,它允许开发者在没有XML架构(Schema)的情况下处理XML文档。VTD-XML库是一个高效且灵活的XML处理...

    vtd-xml解析实例

    网上vtd的使用资料比较少,可能是太简单了没人想写吧。自己写的Demo,对VTDNav、AutoPilot进一步进行封装,从而简化解析代码,仅供参考 上传后才发现上传的demo.xml错了,貌似无法重新上传,内容应该是 &lt;?xml ...

Global site tag (gtag.js) - Google Analytics