1

我在 java 中实现了 VTD-Parser,它成功地轻松解析了大约 500 MB 的 XML 文件,并且能够在 Excel 中写入。我了解DOM解析器首先创建了一个树节点结构然后获取数据,而SAX是一个基于事件的解析器。但是,是什么让 VTD 解析文件如此简单高效呢?我试着搜索,我得到了很多实现的例子,但从来没有得到逻辑。我尝试了下面的链接来了解这个想法,但没有得到清晰的图片。 VTD_Parser

如果有人可以解释这个简短的想法。

4

1 回答 1

1

根据有关该主题的Wikipedia 页面,VTD-XML(XML 的虚拟令牌描述符)利用非提取式解析,这意味着它不会将文档中的数据提取到一些基于内存的数据结构中,而是构建一个数据结构,包含指向原始文档的指针(以偏移量和长度的形式)。这种处理显然是最节省内存的,但我相信它是以性能为代价的,因为在请求数据时会完成不可避免的 IO 操作(但缓存在这里有很大帮助)。

在我看来,当输入非常大而请求的数据非常小时(一种数据挖掘场景)时,这种处理是最有用的

于 2015-06-07T11:18:53.567 回答