CN112214461A - 一种遥感元数据的模糊xml压缩方法 - Google Patents
一种遥感元数据的模糊xml压缩方法 Download PDFInfo
- Publication number
- CN112214461A CN112214461A CN202011086120.XA CN202011086120A CN112214461A CN 112214461 A CN112214461 A CN 112214461A CN 202011086120 A CN202011086120 A CN 202011086120A CN 112214461 A CN112214461 A CN 112214461A
- Authority
- CN
- China
- Prior art keywords
- node
- xml
- variable
- nodes
- fuzzy
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/174—Redundancy elimination performed by the file system
- G06F16/1744—Redundancy elimination performed by the file system using compression, e.g. sparse files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/80—Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
- G06F16/81—Indexing, e.g. XML tags; Data structures therefor; Storage structures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种遥感元数据的模糊XML压缩方法,包括以下步骤:A:取模糊XML文档,并以变量形式保存模糊XML文档的路径;B:获取模糊XML文件中所有结点的结点信息并以Map类型变量存储,将模糊XML文件由XML类型转化为Map类型;C:将步骤B中得到的所有结点的结点信息转化为XML类型,再根据写入结点的位置写入结点,并更新写入结点的结点编码,最终将步骤B中得到的Map类型的模糊XML文件转化为XML类型;D:输出压缩后的模糊XML文档。本发明通过对模糊XML文档中的重复标签和属性使用短字节进行编码,极大地提高了压缩率,减小了存储空间,极大地提高了对计算机存储空间的利用率。
Description
技术领域
本发明涉及一种文件压缩方法,尤其涉及一种遥感元数据的模糊XML压缩方法。
背景技术
遥感影像(Remote Sensing Image)是指记录各种地物电磁波大小的胶片或照片,主要分为航空像片和卫星相片。由于可扩展标记语言即XML具有可扩展性、结构化、规范性和简洁性等特点,因此遥感影像元数据一般采用XML数据进行表达。在遥感影像元数据具有不确定性的背景下,传统的XML数据已经不能够充分的表达元数据中存在不确定性的问题,所以在实际应用中一般使用含有模糊结构体和可能性分布的模糊XML文档来描述遥感影像元数据中存在的不确定性。
由于遥感元数据具有体量大且信息丰富的特点以及XML自身数据冗余的特点,与同样的数据相比,XML类型的数据会比其他类型的数据占据更多的存储空间,因而,对于XML数据的压缩就成为研究者的研究热点。
目前的遥感信息处理系统往往采用压缩技术以减少存储和传输开销,但是对遥感元数据需要解压以后才能进行,这带来了额外的性能开销。传统的XML文档压缩方法都是针对精确的XML文档进行压缩,而不能够对模糊的XML文档进行有效的压缩。研究不需要解压的模糊XML文档算法就显得十分的迫切。因此遥感元数据的模糊XML文档的压缩是一个亟待解决的问题。
发明内容
本发明的目的是提供一种遥感元数据的模糊XML压缩方法,通过对模糊XML文档中的重复标签和属性使用短字节进行编码,极大地提高了压缩率,减小了存储空间,极大地提高了对计算机存储空间的利用率。
本发明采用下述技术方案:
一种遥感元数据的模糊XML压缩方法,包括以下步骤:
A:读取模糊XML文档,并以变量形式保存模糊XML文档的路径;
B:获取模糊XML文件中所有结点的结点信息并以Map类型变量存储,将模糊XML文件由XML类型转化为Map类型;
C:将步骤B中得到的所有结点的结点信息转化为XML类型,再根据写入结点的位置写入结点,并更新写入结点的结点编码,最终将步骤B中得到的Map类型的模糊XML文件转化为XML类型;
D:输出压缩后的模糊XML文档。
所述的步骤A中,将模糊XML文档的路径以变量filepath进行保存,filepath为自定义的变量名称。
所述的步骤B包括以下具体步骤:
B1:首先创建一个LinkedHashMap集合,以结点先序遍历的顺序来存储模糊XML文档的树形结构,并使用map_finall变量保存;然后创建一个file对象,file对象读入步骤A中得到的filepath变量,从而获取到模糊XML文件的信息;再使用解析器SAXReader()读入file对象将模糊XML文件解析为doc1变量,doc1变量类型为Document对象类型;
B2:首先通过getRootElement()方法获取doc1变量的根结点,并将根结点用rootElement变量保存;然后判断根结点是否含有子结点,若不含有子结点,则直接通过getNum()方法和getText()方法获取到根结点的结点信息,然后将得到的根结点的结点信息封装到map_finall变量中,并跳转到步骤B4;若含有子结点,则进入步骤B3;结点信息包括结点编号信息和结点属性信息;
B3:通过根结点调用递归方法recursion()获取到所有结点的结点信息;
B4:将集合map_finall以变量map另存,实现模糊XML文件由XML类型转化为Map类型。
所述的步骤B3包括以下具体步骤:
首先定义一个flag标志变量,表示结点是否含有子结点;然后创建两个LinkedHashMap集合,分别定义为集合map_this和集合map_children,集合map_this存储本层所有结点的结点信息,map_children存储本层所有结点的所有子结点的结点信息;其中,flag为自定义的标志变量名称,集合map_this和集合map_children为自定义的集合名称;
其次,创建结点迭代器iterator对结点是否含有子结点进行判断,迭代器的初始值为根结点,然后通过iterator.hasNext()依次获取到根结点的所有子结点,再依次判断所有的子结点是否还存在子结点;flag变量的初始值为1,然后通过iterator.hasNext()所获取到的下一个结点的信息对flag变量进行赋值;
在对结点是否含有子结点进行判断时:
(1)如果flag=0,则说明该结点的所有首层子结点均有次层子结点,然后通过iterator.next()方法获取到所有的首层子结点,并依次对所有的首层子结点进行递归操作,继续判断每个首层子结点是否存在次层子结点;
(2)如果flag=1,则说明该结点的所有首层子结点均无次层子结点,则直接将该结点的结点信息封装到map_this变量中;
(3)如果flag=2,则说明该结点的部分首层子结点存在次层子结点,部分首层子结点不存在次层子结点;然后,对于所有不存在次层子结点的首层子结点,将首层子结点的结点信息直接封装在集合map_this中;对于存在次层子结点的首层子结点则进行递归操作,并将获取到的次层子结点的结点信息直接封装在集合map_this中;
最后,通过map_finall.put()方法将获取到的集合map_this所储存的所有的结点信息转存到集合map_finall中。
所述的步骤C包括以下具体步骤:
C1:首先创建一个Map类型的集合rootMap,存储结点信息,然后通过map.get(parentNum)方法将集合rootMap的初始值赋值为根结点的结点信息;再创建一个Document对象定义为doc2变量,用于获取变量map中结点的结点信息,同时将doc2变量的编码格式设置为“utf-8”格式,再通过addElement(parentNum)方法依次向doc2变量中加入结点;其中,rootMap为自定义的集合名称,map.get(parentNum)为现有的获取根结点的结点信息的方法,addElement(parentNum)为现有的加入根结点的方法;
C2:通过getRootElement()方法获取到根结点,从根结点调用iterator()方法开始迭代,获取到所有结点的结点信息,并以String类型的变量xml保存;其中,iterator()方法为现有的集合迭代方法,xml为自定义的储存所有结点信息的变量名称;
C3:对迭代后获得的变量xml进行格式化;首先创建一个String类型的变量requestXML用于储存格式化后的变量xml,创建一个对象writer,对象writer为XMLWriter类型,对Map类型的模糊XML文件中的结点进行写入;requestXML为自定义的变量名称,writer为自定义的写入对象名称;
C4:创建Document对象定义为document变量,用于暂存中间文档,创建解析器reader用于解析读入变量xml,解析器reader为SAXReader解析器;然后通过解析器reader与StringReader(xml)方法对变量xml进行解析,并将解析后的xml以变量document临时储存;然后创建一个变量stringWriter用于变量xml的字符串流写入,变量stringWriter为StringWriter对象,创建变量format用于规定转化后模糊XML文档的格式,变量format为OutputFormat对象,其中规定的格式包括每一级结点前设置空格缩进、变量xml声明和内容之间不添加空行、添加变量xml头部声明、设置编码格式为“GB2312”以及设置分行;变量document为自定义的变量名称,reader为自定义的解析器名称;StringReader(xml)方法为现有的以字符串流读取XML文档的方法,stringWriter为自定义的以字符串流写入对象名称,format为自定义的文档格式变量名称;
C5:通过xml.StandaloneWriter(stringWriter,format)方法将变量xml逐步写入到对象writer中,最终得到更新后的对象writer;其中,xml.StandaloneWriter(stringWriter,format)方法为现有的以字符串流写入的方法;
C6:将更新后的对象writer通过getBuffer()方法和toString()方法,以字符串流的形式储存到最终的变量requestXML中,所获得的变量requestXML即为转化后的模糊XML文档,即压缩后的模糊XML文档。
所述的步骤C5中,将结点的编码设置为<NodeNum,PathName,PathPosition,poss>,其中NodeNum为结点在文档树中先序遍历的编号;PathName为结点的路径名称;PathPosition为结点的路径序号;poss为结点的模糊度;
结点的写入包含结点的新增、删除和修改;在将变量xml逐步写入到对象writer过程中,首先判断结点的写入是结点的新增、删除或修改,若结点的写入是结点的删除或修改,则直接进行结点的删除或修改;若结点的写入是结点的新增,则分为两种情况进行操作:1:若对象writer中没有任何结点,设新增结点为结点v,则直接将新增的结点v写入对象writer中;2:若对象writer中已存在一个或多个结点,则设对象writer中最近写入的结点为结点u,新增结点为结点v,然后进行结点u和结点v关系的判断,以确定新增的v结点的位置:
若结点u是结点v的父结点,则将结点v直接写入到结点u的下一个位置;
若结点v是结点u的父结点,则将结点v写入到结点u的上一个位置;
若结点v是结点u的兄弟结点,设结点p为结点v和结点u的父结点,结点q是与结点p同一层的结点,则将结点v写入到结点p的前两个位置;
在确定新增的结点v的位置后,对结点v的编码进行修改,将新增的结点v的结点编号通过对象writer中最近写入的结点u的“NodeNum”进行自增,然后再将结点v的信息写入对象writer中。
在进行结点u和结点v关系的判断时,定义结点u的编码为<f1,n1+node1+"/",p1,poss>,结点v的编码为<f2,n2+node2+"/",p2,poss>,则有:
(1)结点u所在层次为“/”的个数;
(2)若f1≠f2,n1+node1+"/"=n2,且p1=p2,则结点u是结点v的父结点;
(3)若f1≠f2,n2+node2+"/"=n1,且p1=p2,则结点v是结点u的父结点;
(4)若f1≠f2,n1+node1+"/"=n2+node2+"/",且p1=p2,则结点v是结点u的兄弟结点。
本发明考虑到实际应用场景中遥感元数据的不确定性,通过用模糊XML文档来代替传统的精确的XML文档来描述遥感元数据。在写入结点时,通过LinkedHashMap保证写入结点编号及位置信息的唯一性,从而保证了写入结点编码的唯一性,而且对模糊XML文档中的重复标签和属性使用短字节进行编码,极大地提高了压缩率,减小了存储空间,极大地提高了对计算机存储空间的利用率。
附图说明
图1为本发明的流程示意图;
图2为本发明所述压缩方法与现有XQzip、XBzip、ZCQ和XPATH压缩算法的压缩对比示意图。
具体实施方式
以下结合附图和实施例对本发明作以详细的描述:
如图1所示,本发明所述的遥感元数据的模糊XML压缩方法,包括以下步骤:
A:读取模糊XML文档,并以变量形式保存模糊XML文档的路径;在本实施例中,将模糊XML文档的路径以变量filepath进行保存,filepath为自定义的变量名称;
B:获取模糊XML文件中所有结点的结点信息并以Map类型变量存储,将模糊XML文件由XML类型转化为Map类型;
所述的步骤B包括以下具体步骤:
B1:首先创建一个LinkedHashMap集合,用于以结点先序遍历的顺序来存储模糊XML文档的树形结构,以保证结点的转化顺序,并使用map_finall变量保存;然后创建一个file对象,file对象读入步骤A中得到的filepath变量,从而获取到模糊XML文件的信息;再使用解析器SAXReader()读入file对象将模糊XML文件解析为doc1变量,doc1变量类型为Document对象类型,封装成Document对象有利于获取根结点信息;
其中,map_finall为自定义的集合名称,SAXReader为现有解析器,doc1为自定义的变量名称;
B2:首先通过getRootElement()方法获取doc1变量的根结点,并将根结点用rootElement变量保存;然后判断根结点是否含有子结点,若不含有子结点,则直接通过getNum()方法和getText()方法获取到根结点的结点信息,然后将得到的根结点的结点信息封装到map_finall变量中,并跳转到步骤B4;若含有子结点,则进入步骤B3;结点信息包括结点编号信息和结点属性信息;
其中,getRootElement()为现有的获取根结点的方法,getNum()为现有的获取结点编号的方法,getText()为现有的获取结点属性信息的方法,rootElement为自定义的变量名称;
B3:通过根结点调用递归方法recursion()获取到所有结点的结点信息;
首先定义一个flag标志变量,用于表示结点是否含有子结点;然后创建两个LinkedHashMap集合,分别定义为集合map_this和集合map_children,集合map_this用于存储本层所有结点的结点信息,map_children用于存储本层所有结点的所有子结点的结点信息,以保证结点的递归顺序;其中,flag为自定义的标志变量名称,集合map_this和集合map_children为自定义的集合名称;
其次,创建结点迭代器iterator对结点是否含有子结点进行判断,迭代器的初始值为根结点,然后通过iterator.hasNext()依次获取到根结点的所有子结点,再依次判断所有的子结点是否还存在子结点。flag变量的初始值为1,然后通过iterator.hasNext()所获取到的下一个结点的信息对flag变量进行赋值;
在对结点是否含有子结点进行判断时:
(1)如果flag=0,则说明该结点的所有首层子结点均有次层子结点,然后通过iterator.next()方法获取到所有的首层子结点,并依次对所有的首层子结点进行递归操作,继续判断每个首层子结点是否存在次层子结点;
(2)如果flag=1,则说明该结点的所有首层子结点均无次层子结点,则直接将该结点的结点信息封装到map_this变量中;
(3)如果flag=2,则说明该结点的部分首层子结点存在次层子结点,部分首层子结点不存在次层子结点;然后,对于所有不存在次层子结点的首层子结点,将首层子结点的结点信息直接封装在集合map_this中;对于存在次层子结点的首层子结点则进行递归操作,并将获取到的次层子结点的结点信息直接封装在集合map_this中;
最后,通过map_finall.put()方法将获取到的集合map_this所储存的所有的结点信息转存到集合map_finall中;
B4:将集合map_finall以变量map另存,从而实现模糊XML文件由XML类型转化为Map类型;
其中,结点迭代器iterator所使用的elementIterator()方法为现有的结点迭代方法,结点迭代器iterator所使用的iterator.hasNext()方法为现有的获取下一个结点的方法;变量map为Map类型变量,Iterator为现有的迭代器,map_finall.put()方法为现有的获取结点信息的方法;
C:将步骤B中得到的所有结点的结点信息转化为XML类型,再根据写入结点的位置写入结点,并更新写入结点的结点编码,最终将步骤B中得到的Map类型的模糊XML文件转化为XML类型;
所述步骤C包括以下具体步骤:
C1:首先创建一个Map类型的集合rootMap,用于存储结点信息,然后通过map.get(parentNum)方法将集合rootMap的初始值赋值为根结点的结点信息;再创建一个Document对象定义为doc2变量,用于获取变量map中结点的结点信息,同时将doc2变量的编码格式设置为“utf-8”格式,再通过addElement(parentNum)方法依次向doc2变量中加入结点;
rootMap为自定义的集合名称,map.get(parentNum)为现有的获取根结点的结点信息的方法,addElement(parentNum)为现有的加入根结点的方法;
C2:通过getRootElement()方法获取到根结点,从根结点调用iterator()方法开始迭代,获取到所有结点的结点信息,并以String类型的变量xml保存。其中,iterator()方法为现有的集合迭代方法,xml为自定义的储存所有结点信息的变量名称;
C3:对迭代后获得的变量xml进行格式化。首先创建一个String类型的变量requestXML用于储存格式化后的变量xml,创建一个对象writer,对象writer为XMLWriter类型,对Map类型的模糊XML文件中的结点进行写入;requestXML为自定义的变量名称,writer为自定义的写入对象名称;
C4:创建Document对象定义为document变量,用于暂存中间文档,创建解析器reader用于解析读入变量xml,解析器reader为SAXReader解析器;然后通过解析器reader与StringReader(xml)方法对变量xml进行解析,并将解析后的xml以变量document临时储存;然后创建一个变量stringWriter用于变量xml的字符串流写入,变量stringWriter为StringWriter对象,创建变量format用于规定转化后模糊XML文档的格式,变量format为OutputFormat对象,其中规定的格式包括每一级结点前设置空格缩进、变量xml声明和内容之间不添加空行、添加变量xml头部声明、设置编码格式为“GB2312”以及设置分行。
变量document为自定义的变量名称,reader为自定义的解析器名称;StringReader(xml)方法为现有的以字符串流读取XML文档的方法,stringWriter为自定义的以字符串流写入对象名称,format为自定义的文档格式变量名称。
C5:通过xml.StandaloneWriter(stringWriter,format)方法将变量xml逐步写入到对象writer中,最终得到更新后的对象writer。
其中,xml.StandaloneWriter(stringWriter,format)方法为现有的以字符串流写入的方法;
本发明中,由于基于现有的精确XML文档基础上的字符串流写入XML文档的方法存在一定的缺陷,如无法充分挖掘数据信息和压缩效果不佳,因此本发明中充分考虑到实际XML文档的模糊性,通过使用含有模糊度属性的模糊XML文档来描述遥感影像元数据中存在的不确定性,对现有xml.StandaloneWriter(stringWriter,format)方法进行如下修改:
在步骤C5中,本发明将结点的编码设置为<NodeNum,PathName,PathPosition,poss>,其中NodeNum为结点在文档树中先序遍历的编号;PathName为结点的路径名称;PathPosition为结点的路径序号;poss为结点的模糊度;
结点的写入包含结点的新增、删除和修改;在将变量xml逐步写入到对象writer过程中,首先判断结点的写入是结点的新增、删除或修改,若结点的写入是结点的删除或修改,由于删除或修改的操作不会改变结点的原有编码,因此直接进行结点的删除或修改;若结点的写入是结点的新增,则分为两种情况进行操作:1:若对象writer中没有任何结点,设新增结点为结点v,则直接将新增的结点v写入对象writer中;2:若对象writer中已存在一个或多个结点,则设对象writer中最近写入的结点为结点u,新增结点为结点v,然后进行结点u和结点v关系的判断,以确定新增的v结点的位置:
若结点u是结点v的父结点,则将结点v直接写入到结点u的下一个位置;
若结点v是结点u的父结点,则将结点v写入到结点u的上一个位置;
若结点v是结点u的兄弟结点,设结点p为结点v和结点u的父结点,结点q是与结点p同一层的结点,则将结点v写入到结点p的前两个位置;
在确定新增的结点v的位置后,对结点v的编码进行修改,将新增的结点v的结点编号通过对象writer中最近写入的结点u的“NodeNum”进行自增,即结点v的结点编号修改为结点u的结点编号+1,保证结点编号的唯一性,从而使新增的v结点编码唯一;然后再将结点v的信息写入对象writer中,写入方法可采用getNum()方法和getText()方法,避免数据的覆盖和丢失。
在进行结点u和结点v关系的判断时,定义结点u的编码为<f1,n1+node1+"/",p1,poss>,结点v的编码为<f2,n2+node2+"/",p2,poss>,则有:
(1)结点u所在层次为“/”的个数;
(2)若f1≠f2,n1+node1+"/"=n2,且p1=p2,则结点u是结点v的父结点;
(3)若f1≠f2,n2+node2+"/"=n1,且p1=p2,则结点v是结点u的父结点;
(4)若f1≠f2,n1+node1+"/"=n2+node2+"/",且p1=p2,则结点v是结点u的兄弟结点。
C6:将更新后的对象writer通过getBuffer()方法和toString()方法,以字符串流的形式储存到最终的变量requestXML中,所获得的变量requestXML即为转化后的模糊XML文档,也就是压缩后的模糊XML文档。
getBuffer()方法为现有的获取并保存当前缓冲区值的方法,toString()方法为现有的转化为字符串的方法。
D:输出压缩后的模糊XML文档。
由于本发明考虑到实际应用场景中遥感元数据的不确定性,通过用模糊XML文档来代替传统的精确的XML文档来描述遥感元数据。本发明在写入结点时,通过LinkedHashMap保证写入结点编号及位置信息的唯一性,从而保证了写入结点编码的唯一性,而且对模糊XML文档中的重复标签和属性通过用短字符串代替长字符串后,将模糊XML文档树压缩进内存当中,有效减少了存储空间。如图2所示,本发明所述的遥感元数据的模糊XML压缩方法FXMLCA,在同等文件大小的情况下,与现有的XQzip、XBzip、ZCQ和XPATH压缩算法相比,压缩后的文档最小,压缩率最优。
Claims (7)
1.一种遥感元数据的模糊XML压缩方法,其特征在于,包括以下步骤:
A:读取模糊XML文档,并以变量形式保存模糊XML文档的路径;
B:获取模糊XML文件中所有结点的结点信息并以Map类型变量存储,将模糊XML文件由XML类型转化为Map类型;
C:将步骤B中得到的所有结点的结点信息转化为XML类型,再根据写入结点的位置写入结点,并更新写入结点的结点编码,最终将步骤B中得到的Map类型的模糊XML文件转化为XML类型;
D:输出压缩后的模糊XML文档。
2.根据权利要求1所述的遥感元数据的模糊XML压缩方法,其特征在于,所述的步骤A中,将模糊XML文档的路径以变量filepath进行保存,filepath为自定义的变量名称。
3.根据权利要求2所述的遥感元数据的模糊XML压缩方法,其特征在于,所述的步骤B包括以下具体步骤:
B1:首先创建一个LinkedHashMap集合,以结点先序遍历的顺序来存储模糊XML文档的树形结构,并使用map_finall变量保存;然后创建一个file对象,file对象读入步骤A中得到的filepath变量,从而获取到模糊XML文件的信息;再使用解析器SAXReader()读入file对象将模糊XML文件解析为doc1变量,doc1变量类型为Document对象类型;
B2:首先通过getRootElement()方法获取doc1变量的根结点,并将根结点用rootElement变量保存;然后判断根结点是否含有子结点,若不含有子结点,则直接通过getNum()方法和getText()方法获取到根结点的结点信息,然后将得到的根结点的结点信息封装到map_finall变量中,并跳转到步骤B4;若含有子结点,则进入步骤B3;结点信息包括结点编号信息和结点属性信息;
B3:通过根结点调用递归方法recursion()获取到所有结点的结点信息;
B4:将集合map_finall以变量map另存,实现模糊XML文件由XML类型转化为Map类型。
4.根据权利要求3所述的遥感元数据的模糊XML压缩方法,其特征在于:所述的步骤B3包括以下具体步骤:
首先定义一个flag标志变量,表示结点是否含有子结点;然后创建两个LinkedHashMap集合,分别定义为集合map_this和集合map_children,集合map_this存储本层所有结点的结点信息,map_children存储本层所有结点的所有子结点的结点信息;其中,flag为自定义的标志变量名称,集合map_this和集合map_children为自定义的集合名称;
其次,创建结点迭代器iterator对结点是否含有子结点进行判断,迭代器的初始值为根结点,然后通过iterator.hasNext()依次获取到根结点的所有子结点,再依次判断所有的子结点是否还存在子结点;flag变量的初始值为1,然后通过iterator.hasNext()所获取到的下一个结点的信息对flag变量进行赋值;
在对结点是否含有子结点进行判断时:
(1)如果flag=0,则说明该结点的所有首层子结点均有次层子结点,然后通过iterator.next()方法获取到所有的首层子结点,并依次对所有的首层子结点进行递归操作,继续判断每个首层子结点是否存在次层子结点;
(2)如果flag=1,则说明该结点的所有首层子结点均无次层子结点,则直接将该结点的结点信息封装到map_this变量中;
(3)如果flag=2,则说明该结点的部分首层子结点存在次层子结点,部分首层子结点不存在次层子结点;然后,对于所有不存在次层子结点的首层子结点,将首层子结点的结点信息直接封装在集合map_this中;对于存在次层子结点的首层子结点则进行递归操作,并将获取到的次层子结点的结点信息直接封装在集合map_this中;
最后,通过map_finall.put()方法将获取到的集合map_this所储存的所有的结点信息转存到集合map_finall中。
5.根据权利要求4所述的遥感元数据的模糊XML压缩方法,其特征在于:所述的步骤C包括以下具体步骤:
C1:首先创建一个Map类型的集合rootMap,存储结点信息,然后通过map.get(parentNum)方法将集合rootMap的初始值赋值为根结点的结点信息;再创建一个Document对象定义为doc2变量,用于获取变量map中结点的结点信息,同时将doc2变量的编码格式设置为“utf-8”格式,再通过addElement(parentNum)方法依次向doc2变量中加入结点;其中,rootMap为自定义的集合名称,map.get(parentNum)为现有的获取根结点的结点信息的方法,addElement(parentNum)为现有的加入根结点的方法;
C2:通过getRootElement()方法获取到根结点,从根结点调用iterator()方法开始迭代,获取到所有结点的结点信息,并以String类型的变量xml保存;其中,iterator()方法为现有的集合迭代方法,xml为自定义的储存所有结点信息的变量名称;
C3:对迭代后获得的变量xml进行格式化;首先创建一个String类型的变量requestXML用于储存格式化后的变量xml,创建一个对象writer,对象writer为XMLWriter类型,对Map类型的模糊XML文件中的结点进行写入;requestXML为自定义的变量名称,writer为自定义的写入对象名称;
C4:创建Document对象定义为document变量,用于暂存中间文档,创建解析器reader用于解析读入变量xml,解析器reader为SAXReader解析器;然后通过解析器reader与StringReader(xml)方法对变量xml进行解析,并将解析后的xml以变量document临时储存;然后创建一个变量stringWriter用于变量xml的字符串流写入,变量stringWriter为StringWriter对象,创建变量format用于规定转化后模糊XML文档的格式,变量format为OutputFormat对象,其中规定的格式包括每一级结点前设置空格缩进、变量xml声明和内容之间不添加空行、添加变量xml头部声明、设置编码格式为“GB2312”以及设置分行;变量document为自定义的变量名称,reader为自定义的解析器名称;StringReader(xml)方法为现有的以字符串流读取XML文档的方法,stringWriter为自定义的以字符串流写入对象名称,format为自定义的文档格式变量名称;
C5:通过xml.StandaloneWriter(stringWriter,format)方法将变量xml逐步写入到对象writer中,最终得到更新后的对象writer;其中,xml.StandaloneWriter(stringWriter,format)方法为现有的以字符串流写入的方法;
C6:将更新后的对象writer通过getBuffer()方法和toString()方法,以字符串流的形式储存到最终的变量requestXML中,所获得的变量requestXML即为转化后的模糊XML文档,即压缩后的模糊XML文档。
6.根据权利要求5所述的遥感元数据的模糊XML压缩方法,其特征在于:所述的步骤C5中,将结点的编码设置为<NodeNum,PathName,PathPosition,poss>,其中NodeNum为结点在文档树中先序遍历的编号;PathName为结点的路径名称;PathPosition为结点的路径序号;poss为结点的模糊度;
结点的写入包含结点的新增、删除和修改;在将变量xml逐步写入到对象writer过程中,首先判断结点的写入是结点的新增、删除或修改,若结点的写入是结点的删除或修改,则直接进行结点的删除或修改;若结点的写入是结点的新增,则分为两种情况进行操作:1:若对象writer中没有任何结点,设新增结点为结点v,则直接将新增的结点v写入对象writer中;2:若对象writer中已存在一个或多个结点,则设对象writer中最近写入的结点为结点u,新增结点为结点v,然后进行结点u和结点v关系的判断,以确定新增的v结点的位置:
若结点u是结点v的父结点,则将结点v直接写入到结点u的下一个位置;
若结点v是结点u的父结点,则将结点v写入到结点u的上一个位置;
若结点v是结点u的兄弟结点,设结点p为结点v和结点u的父结点,结点q是与结点p同一层的结点,则将结点v写入到结点p的前两个位置;
在确定新增的结点v的位置后,对结点v的编码进行修改,将新增的结点v的结点编号通过对象writer中最近写入的结点u的“NodeNum”进行自增,然后再将结点v的信息写入对象writer中。
7.根据权利要求6所述的遥感元数据的模糊XML压缩方法,其特征在于:在进行结点u和结点v关系的判断时,定义结点u的编码为<f1,n1+node1+"/",p1,poss>,结点v的编码为<f2,n2+node2+"/",p2,poss>,则有:
(1)结点u所在层次为“/”的个数;
(2)若f1≠f2,n1+node1+"/"=n2,且p1=p2,则结点u是结点v的父结点;
(3)若f1≠f2,n2+node2+"/"=n1,且p1=p2,则结点v是结点u的父结点;
(4)若f1≠f2,n1+node1+"/"=n2+node2+"/",且p1=p2,则结点v是结点u的兄弟结点。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011086120.XA CN112214461B (zh) | 2020-10-12 | 2020-10-12 | 一种遥感元数据的模糊xml压缩方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011086120.XA CN112214461B (zh) | 2020-10-12 | 2020-10-12 | 一种遥感元数据的模糊xml压缩方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112214461A true CN112214461A (zh) | 2021-01-12 |
CN112214461B CN112214461B (zh) | 2022-09-30 |
Family
ID=74054399
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011086120.XA Active CN112214461B (zh) | 2020-10-12 | 2020-10-12 | 一种遥感元数据的模糊xml压缩方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112214461B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113518088A (zh) * | 2021-07-12 | 2021-10-19 | 北京百度网讯科技有限公司 | 数据处理方法、装置、服务器、客户端和介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004302868A (ja) * | 2003-03-31 | 2004-10-28 | Nri & Ncc Co Ltd | Xmlのタグ圧縮方法 |
JP2004342029A (ja) * | 2003-05-19 | 2004-12-02 | Hitachi Ltd | 構造化文書圧縮方法及び装置 |
US20060031756A1 (en) * | 2004-08-05 | 2006-02-09 | Digi International Inc. | Method for compressing XML documents into valid XML documents |
CN104462147A (zh) * | 2013-09-25 | 2015-03-25 | 天津书生投资有限公司 | 一种文档的存储方法 |
CN106503003A (zh) * | 2015-09-06 | 2017-03-15 | 阿里巴巴集团控股有限公司 | 一种可扩展标记语言xml文档的压缩、解压方法和装置 |
CN109145155A (zh) * | 2018-07-09 | 2019-01-04 | 中科遥感科技集团有限公司 | 海量遥感影像元数据高并发入库处理方法 |
CN110245248A (zh) * | 2019-05-31 | 2019-09-17 | 河南大学 | 一种遥感影像关键字查询方法 |
-
2020
- 2020-10-12 CN CN202011086120.XA patent/CN112214461B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004302868A (ja) * | 2003-03-31 | 2004-10-28 | Nri & Ncc Co Ltd | Xmlのタグ圧縮方法 |
JP2004342029A (ja) * | 2003-05-19 | 2004-12-02 | Hitachi Ltd | 構造化文書圧縮方法及び装置 |
US20060031756A1 (en) * | 2004-08-05 | 2006-02-09 | Digi International Inc. | Method for compressing XML documents into valid XML documents |
CN104462147A (zh) * | 2013-09-25 | 2015-03-25 | 天津书生投资有限公司 | 一种文档的存储方法 |
CN106503003A (zh) * | 2015-09-06 | 2017-03-15 | 阿里巴巴集团控股有限公司 | 一种可扩展标记语言xml文档的压缩、解压方法和装置 |
CN109145155A (zh) * | 2018-07-09 | 2019-01-04 | 中科遥感科技集团有限公司 | 海量遥感影像元数据高并发入库处理方法 |
CN110245248A (zh) * | 2019-05-31 | 2019-09-17 | 河南大学 | 一种遥感影像关键字查询方法 |
Non-Patent Citations (4)
Title |
---|
LI TING: "A structure-based approach of kryword querying for fuzzy XML data", 《RESEARCH ARTICLE》 * |
李永超: "基于模糊XML的海量遥感元数据查询技术的研究与实现", 《中国优秀硕士学位论文全文数据库》 * |
杨静静,马骏: "遥感影像区域面积快速计算并行算法研究", 《万方数据》 * |
缪丰羽等: "图结构模糊XML文档上的模式匹配算法", 《计算机科学》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113518088A (zh) * | 2021-07-12 | 2021-10-19 | 北京百度网讯科技有限公司 | 数据处理方法、装置、服务器、客户端和介质 |
CN113518088B (zh) * | 2021-07-12 | 2023-07-07 | 北京百度网讯科技有限公司 | 数据处理方法、装置、服务器、客户端和介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112214461B (zh) | 2022-09-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100424130B1 (ko) | 데이터 압축 장치, 데이터베이스 시스템, 데이터 통신시스템, 데이터 압축 방법, 기억 매체 및 프로그램 전송장치 | |
US8346737B2 (en) | Encoding of hierarchically organized data for efficient storage and processing | |
US8010889B2 (en) | Techniques for efficient loading of binary XML data | |
US7509574B2 (en) | Method and system for reducing delimiters | |
US8117217B2 (en) | Information processing apparatus and encoding method | |
US6825781B2 (en) | Method and system for compressing structured descriptions of documents | |
EP2021957B1 (en) | Efficient piece-wise updates of binary encoded xml data | |
US7952500B2 (en) | Serialization of shared and cyclic data structures using compressed object encodings | |
US8024353B2 (en) | Method and system for sequentially accessing compiled schema | |
US20020029229A1 (en) | Systems and methods for data compression | |
US20090254882A1 (en) | Methods and devices for iterative binary coding and decoding of xml type documents | |
US7500184B2 (en) | Determining an acceptance status during document parsing | |
JP2004530188A (ja) | 構造化された文書を圧縮/伸長する方法 | |
KR101109201B1 (ko) | 멀티미디어 환경에서의 오디오 비쥬얼 데이터 콘텐츠의기술 방법 | |
CN112214461B (zh) | 一种遥感元数据的模糊xml压缩方法 | |
KR101224684B1 (ko) | 패키징 모델의 컴포넌트와 패키지의 물리적 표현의 피처간의 매핑 방법 및 시스템 | |
CN113434625A (zh) | 专利检索式的代码化方法、设备和存储介质 | |
CN110839022A (zh) | 一种基于xml语言的车载控制软件通信协议解析方法 | |
US20120151330A1 (en) | Method and apparatus for encoding and decoding xml documents using path code | |
US20060212799A1 (en) | Method and system for compiling schema | |
US20110185274A1 (en) | Mark-up language engine | |
CN115334169B (zh) | 一种节省网络带宽的通信协议编码方法 | |
CN117336393A (zh) | 一种基于配置模型实现报文数据自动解析的方法及系统 | |
JP2004342029A (ja) | 構造化文書圧縮方法及び装置 | |
CN111597390A (zh) | 一种数据格式转换框架 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |