VTD-XML实现XML文档的规范化(c14n标准)

      对于规范化而言,只要用途在于XML文档的签名,验证签名时必须比较签名元素是否相同,因此如果没有一个统一的标准(比如属性如何排序,名字空间怎么处理,特殊字符怎么处理等等问题),因此W3C推出了C14n标准用于XML数据的规范化。

      众所周知,XML文档的标准化目前已经有开源实现,比如Apache有一个开源项目XmlSec,其中实现了XML文档的签名,自然就有XML文档的规范化实现。

      但是,作为目前性能最优的下一代XML解析模型,VTD已经得到了越来越多的关注和应用,但是目前尚未有基于VTD的XML规范化实现。

      通过研读C14n标准,得知XML的规范化包括四种模式:1.Inclusive+Comment;2.Inclusive+NoComment; 3.Exclusive+Comment; 4.Exclusive+NoComment; 其中,Inclusive和Exclusive是指处理名字空间上的区别,Inclusive是指节点中定义的名字空间,如果在父节点定义了,便需要将其除掉,Exclusive则非常复杂,具体方法不便描述(可参考C14n的标准描述,或者如后整理好如何描述的语言后再来补上),Comment和NoComment是指是否将注释也包括经规范化的XML文档中。

      而基于VTD实现XML文档的规范化有一个非常大的好处,通过便利VTD-Record变可以非常快捷高效的访问XML文档中的任何Token,因此,实现规范化时变主要基于VTD-Record结构实现,而没有采用VTD-XML原本实现的一个节点遍历函数,而是自己动手实现各种可以方便实现规范化的函数,下面列出了一些需要实现的关键功能函数:

     1.基于节点属性,或者节点名字定位节点开始Token在VTD-Record中的index函数;

     2.查找所有上层节点中所有名字空间定义的函数;

     3.属性排序函数;

     4.判断是否需要将某个指定名字空间排除的函数,适用于 Inclusive模式;

     等等,基于VTD-Record实现起来非常的方便,当然前提是对于VTD-XML的实现有比较深入的了解,基本已经实现了上述第一和第二两种模式,Exclusive模式则比较复杂,还在实现中!

 
 
 

转载于:https://www.cnblogs.com/dyd/archive/2012/03/03/2378728.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值