XML解析简介
在进一步了解VTD-XML前可以先来看一下XML和XML的解析。
XML
XML 指可扩展标记语言(EXtensible Markup Language),在格式上与HTML类似,于html不同的是,xml并不是为了显示数据而是为了传输数据,同时也不具有固定的标签,标签全由用户自定义。XML 是独立于软件和硬件的信息传输工具。
例如:
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
更多关于XML资料请链接:XML学习(一)——简介
XML解析
XML解析是基于XML上层应用程序的基础。
XML解析器一方面负责分析XML内部文档数据,建立相应的数据结构或产生特定的事件以表示这些信息;另一方面,还要为上层应用程序提供必要信息,供上层进行XML文档的操作。
XML解析器的性能高低直接决定了上层应用程序的性能,传统的XML解析有两种,分别是基于DOM解析和基于Stream-based流解析。详情参见这里:XML学习(三)——XML解析
这两种解析方式都是提取式的,而本篇主要要讲一种非提取式的解析方式VTD-XML,这是三种解析方式的对比。可以看到vtd-xml会更优一些

VTD-XML
VTD-XML是一种无提取的XML解析方法,它较好的解决了DOM占用内存过大的缺点,并且还提供了快速的解析与遍历、对XPath的支持和增量更新等特性。
作为大多数XML处理算法的第一步,通常将令牌内容从源文档中提取到许多离散的字符串对象中。我们提出了一种“非抽取式”标记化方法,该方法可将源文档完整地保留在内存中。使用称为虚拟令牌描述符(VTD)的二进制编码规范,处理模型仅使用起始偏移量和长度来表示令牌。为了创建封装在XML中的数据的分层视图,解析器使用称为目录缓存的类目录结构进一步索引相同深度的元素。通过使用VTD和位置缓存导航文档层次结构的演示,我们表明确实有可能创建一个保留大部分内容的基于游标的API。DOM的随机访问功能仅占其内存使用量的一小部分。此外,通过分析定制硬件的关键设计约束条件,我们认为处理模型的内存节省特性可以同时实现“片上XML”和“二进制增强XML”。基准测试结果表明,在内存和处理性能方面,我们的处理模型的参考实现明显优于Xerces DOM。
本文介绍了XML的基本概念,强调了XML作为数据传输工具的角色。接着,讨论了XML解析的重要性以及传统的DOM和Stream-based解析方式。重点讲述了VTD-XML,这是一种非提取式的XML解析方法,能有效解决DOM的内存问题,提供XPath支持和增量更新。VTD-XML通过虚拟令牌描述符(VTD)实现高效解析,其内存和性能表现优于Xerces DOM。
814

被折叠的 条评论
为什么被折叠?



