主权项 |
一种基于可扩展标记语言的无线传感器网络数据压缩方法,其特征在于,对可扩展标记语言XML文档对应的XML节点树进行深度优先遍历并按遍历顺序将各个节点进行编号,XML节点树中的节点个数记为m,第i个节点可描述为Ni=(seqi,pathi,namei,parenti,valuei,atrbi),i∈[1,m];其中seqi表示第i个节点在深度优先遍历下的序号,pathi表示第i个节点的路径,namei表示第i个节点的名称,parenti表示第i个节点的双亲节点在深度优先遍历下对应的序号,valuei表示第i个节点的值,atrbi表示第i个节点的属性或附加信息;将XML节点树用以下式子来表示:T={ROOT,N},其中N为XML节点集合即N={Ni|i∈[1,m]},ROOT为XML节点树的唯一根节点;深度优先遍历XML节点树,依次将每个节点信息Ni=(seqi,pathi,namei,parenti,valuei,atrbi)分别添加到T={ROOT,N}中,遍历完毕后得到XML节点树对应的完整节点信息T;在XML节点树的节点集合N={Ni|i∈[1,m]}中,对于集合N中的节点Ni=(seqi,pathi,namei,parenti,valuei,atrbi),i∈[1,m],合并具有相同路径的冗余节点;若XML节点树中存在两个叶子节点Na和Nb,Na,Nb∈N,Na和Nb的路径信息分别为: <mrow> <mfenced open='' close=''> <mtable> <mtr> <mtd> <msub> <mi>path</mi> <msub> <mi>n</mi> <mi>a</mi> </msub> </msub> <mo>=</mo> <msub> <mi>n</mi> <mn>0</mn> </msub> <mo>→</mo> <msub> <mi>n</mi> <mi>i</mi> </msub> <mo>→</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>→</mo> <msub> <mi>n</mi> <mi>j</mi> </msub> <mo>→</mo> <msub> <mi>n</mi> <mi>a</mi> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>path</mi> <msub> <mi>n</mi> <mi>b</mi> </msub> </msub> <mo>=</mo> <msub> <mi>n</mi> <mn>0</mn> </msub> <mo>→</mo> <msub> <mi>n</mi> <mi>p</mi> </msub> <mo>→</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>→</mo> <msub> <mi>n</mi> <mi>q</mi> </msub> <mo>→</mo> <msub> <mi>n</mi> <mi>b</mi> </msub> </mtd> </mtr> </mtable> </mfenced> <mo>,</mo> </mrow>n0,ni,nj,np,nq∈N;若路径深度 <mrow> <mi>depth</mi> <mrow> <mo>(</mo> <msub> <mi>path</mi> <msub> <mi>n</mi> <mi>a</mi> </msub> </msub> <mo>)</mo> </mrow> <mo>=</mo> <mi>depth</mi> <mrow> <mo>(</mo> <msub> <mi>path</mi> <msub> <mi>n</mi> <mi>b</mi> </msub> </msub> <mo>)</mo> </mrow> </mrow>且 <mrow> <msub> <mi>name</mi> <msub> <mi>n</mi> <mi>a</mi> </msub> </msub> <mo>=</mo> <msub> <mi>name</mi> <msub> <mi>n</mi> <mi>b</mi> </msub> </msub> <mo>,</mo> </mrow>则认为Na等价于Nb,记做Na≈Nb;在XML节点树T={ROOT,N}中,查找等价节点并对其进行合并,修改合并后的等价节点路径表达式,将其置为pathk=n0→(ni||np)→...→(nj||nq)→nk,n0,ni,nj,np,nq,nk∈N;分离XML节点结构信息和数据信息,将节点结构信息和数据信息分开进行存储和压缩:1)XML节点结构信息在TXC压缩方法中,XML节点结构信息用“节点路径信息+节点初始序号”的混合数据类型来表示,由于同一个XML节点树中的节点路径信息会产生重叠,而浪费很多存储空间,因此对XML节点路径信息加以简化:对消除冗余后的XML节点树再进行一次深度优先遍历,并对各节点名称进行编号,得到XML节点名称映射表;对照XML节点名称映射表将XML节点路径信息用编号替换对应的节点名称字符串;2)XML节点数据信息XML节点的数据信息存储采用哈希表的方式来实现,以节点路径信息作为索引值,建立起XML节点结构信息到对应节点数据信息之间的映射关系,索引值key为简化后的节点路径表达式,key被消除冗余后的节点个数m取模后所得结果即为对应数据存储的哈希地址,即H(key)=key mod m采用链地址法来处理冲突构造哈希表:节点数据存储的哈希地址为H(key),具有相同索引值的节点数据信息存储在同一哈希单元保存的链表中,并用初始序号来区分该数据在原始XML文档中的位置。 |