VTD-XML学习(3)——遍历

VTD-XML结点遍历

进行结点遍历时,主要有以下五种操作:

  1. 从父节点到第一个子节点
  2. 从父节点到最后一个子节点
  3. 从子节点到父节点
  4. 从元素结点到上一个兄弟结点
  5. 从元素结点到下一个兄弟结点


仅有VTD Record

  1. 设父元素节点深度为d,在vtd buffer中,从该元素节点vtd record开始,向下搜索第一个节点类型为元素的vtd record,如果该点深度为d+1,则搜索成功,否则没有子节点
  2. 设父节点深度为d,从该点vtd record开始向下搜索第一个节点类型为元素且深度不超过d的vtd record,再从这个点开始向上搜索第一个元素且深度为d+1,若找到则成功,否则说明他没有子节点
  3. 设该节点深度为为d,从该点开始向上搜索第一个元素且深度为d-1的节点,找到成功,未找到说明该点是根4
  4. 设节点深度为d,向下搜索第一个元素且深度不大于d,若该点为d,则成功,若为d-1,则说明无后继兄弟
  5. 设节点深度为d,向上搜索第一个元素且深度不大于d,若为d,成功,若为d-1,则无前序兄弟


含LC Entry

  1. 对于前三层,根据父元素节点LC Entry找到第一个子元素的LC Entry,然后定位到vtd record。其他层同上
  2. 对于前三层,先在同级LC中找到下一个元素结点,设其是N,找到N的第一个子节点K,K的上一个Lc entry就是我们要找的最后一个子节点。其他层同上
  3. 同上
  4. 对于前三层,设同级LC的下一个元素结点为N,找到N的vtd record,然后向上搜索,找到第一个深度不小于d的元素结点。如果该点深度不小于d,则N为要找的下一个兄弟节点。其他层同上
  5. 对于前三层,从vtd buffer中向上找第一个元素节点,若其深度为d-1,说明无前序。否则,同级LC中位于它上面的那个就是他的前序节点。其他层同上
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值