VTD-XML模型分析
VTD-XML是一个新型的非提取式XML解析模型。VTD-XML使用64位整数表示XML节点信息。VTD Record和LC Entry共同构成了VTD-XML的主要结构。
什么是提取? 提取就是指从XML文档中抽取一部分放进内存进行解析,并构建节点对象以保存原始信息
VTD Record
VTD record用来表示XML节点信息,包括节点类型、节点深度、节点长度、偏移量,共有64位。
(1)节点类型:vtd-xml对标准xml进行了拓展,拓展后包括13种节点类型,如起始标记、结束标记、文本节点、注释节点等等。共占了4个比特位(bit63-bit60),最大值为15,具体表示如下:
(2)节点深度:节点深度是指节点在DOM树中的深度,其中根元素节点深度为0,节点深度占了8个比特位(bit59-bit52),最大值为255
(3)节点长度:节点信息长度包括两部分:前缀长度(占9位,51-43),就是命名空间的长度,例如:school:table中,前缀长度为7;完全限定名长度(11位,bit42-bit32),指总长度,例如version长度为7
(4)保留位:bit31、bit30
(5)节点偏移:节点偏移是指节点的首字符在整个XML文档中的位置偏移量。共占了30个比特位(bit29-bit0),节点偏移量并不是一成不变的,不同编码的偏移量不同,utf-8节点长度和偏移量单位是一个字节(8位),utf-16则是两个字节(16位)。节点偏移是指他前面的字符个数,例如:<?xml version="1.0" encoding="utf-8"?> version的偏移6
VTD-XML解析时会把每一个XML节点构造为相应的VTD Record从上到下排列,整理为一个一维数组,称为VTD Buffer
以这个为例子,生成一个VTD Buffer
<?xml version="1.0"?>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns="http://purl.org/rss/1.0/">
<channel rdf:about