CN117454846B - 一种xsd文件转换为json文件的方法 - Google Patents

一种xsd文件转换为json文件的方法 Download PDF

Info

Publication number
CN117454846B
CN117454846B CN202311785019.7A CN202311785019A CN117454846B CN 117454846 B CN117454846 B CN 117454846B CN 202311785019 A CN202311785019 A CN 202311785019A CN 117454846 B CN117454846 B CN 117454846B
Authority
CN
China
Prior art keywords
json
file
temporary
field
extracted
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.)
Active
Application number
CN202311785019.7A
Other languages
English (en)
Other versions
CN117454846A (zh
Inventor
王志明
于文昊
王海军
杨靖伟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangzhou Ruifan Technology Co ltd
Original Assignee
Guangzhou Ruifan Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Guangzhou Ruifan Technology Co ltd filed Critical Guangzhou Ruifan Technology Co ltd
Priority to CN202311785019.7A priority Critical patent/CN117454846B/zh
Publication of CN117454846A publication Critical patent/CN117454846A/zh
Application granted granted Critical
Publication of CN117454846B publication Critical patent/CN117454846B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/151Transformation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/174Redundancy elimination performed by the file system
    • G06F16/1744Redundancy elimination performed by the file system using compression, e.g. sparse files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4488Object-oriented
    • G06F9/449Object-oriented method invocation or resolution

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供了一种XSD文件转换为JSON文件的方法,涉及数据处理技术领域,包括:获得临时JSON文件;基于初始化后的JSONObject和临时JSON文件构建JSONArray,初始化临时JSONArray对象;获得经过优化的JSON对象;将经过优化的JSON对象内部的指定字段全部转为数组格式,并添加到临时JSONArray对象中;判断临时JSONArray对象中的JSON对象是否含有子元素,基于递归寻找过程获得最终的JSON文件,否则直接返回将临时JSONArray对象压缩为一层结构的JSON文件;用以高效、操作简单地生成结构更加简单、内容更加清晰、被解析时更加便捷的JSON文件。

Description

一种XSD文件转换为JSON文件的方法
技术领域
本发明涉及数据处理技术领域,特别涉及一种XSD文件转换为JSON文件的方法。
背景技术
目前,随着大数据时代的蓬勃发展,大数据企业也将会遇到处理各式各样不同类型的数据的情况。因此,能否处理繁杂格式的数据,以及处理效率的高低也是企业一个能力的体现。XML是目前一种比较强大的,格式标准合乎规范的半结构化数据,因此很多企业使用XML文档来存储传输数据。而XSD文件则是XML文档的约束文件,它严格定义了XML文档的语义规则。通过XSD规则约束生成的XML文档,尽管内容可能不同,但结构是固定的,使用者仍然可以解析数据。但是XSD文件不方便阅读理解,前端开发者在解析XSD文件结构内容的时候也相当困难,而JSON数据解析简易。因此如何将复杂的XSD文件转化为容易处理的JSON文件就显得极为必要。目前市场上存在的几种将XSD文件转换为JSON文件的方法有:com.fasterxml.jackson.*、org.json.XML、JAXB和Jackson。
但是以上几种方法都存在问题,就是生成的JSON文件结构太复杂,采用com.fasterxml.jackson.*转换生成的JSON文件结构并不比原xsd文件内容简单,外层element数组内含有的多个element除了必须的name属性以及可选的attribute属性外,还有一个ref字段用来指定其子element的名称。而我们需要的只有name名称以及attribute属性,而element之间的父子所属关系可以用JSON的从属结构来表示,不需要另外添加字段,所以jackson的转换结果很多都是冗余信息,而且若想解析还需要根据ref字段来进行判断,十分麻烦。采用org.json.XML转换生成的JSON文件增加了xmlns:xs 这个命名空间,但仅从结构上看,此方法与第一种方法几乎一样,只是冗余的数据会更多一点。JAXB和Jackson不仅需要手动执行脚本命令,还需要手动修改多个结果java对象的内容,还需要自己判断多个java类的从属关系,然后可调用jackson包中的方法将构建的java类转JSON文件,因此JAXB和Jackson操作过于繁杂。
因此,本发明提出一种XSD文件转换为JSON文件的方法。
发明内容
本发明提供一种XSD文件转换为JSON文件的方法,用以利用对XSD文件转换生成的复杂的临时JSON文件进行压缩优化,可以实现将XSD文件转换为JSON文件过程中生成的多重嵌套且包含很多无用字段的临时JSON文件中的无用属性删除,并在删除后将其压缩至只有一层,即高效、操作简单地生成结构更加简单、内容更加清晰、被解析时更加便捷的JSON文件。
本发明提供一种XSD文件转换为JSON文件的方法,包括:
S1:基于XSD文件路径和初始化后的FileReader类,获得临时JSON文件;
S2:基于初始化后的JSONObject和临时JSON文件构建JSONArray,同时初始化临时JSONArray对象;
S3:基于优化JSON方法,提取出JSON对象中的name、element、attribute属性,获得经过优化的JSON对象;
S4:基于统一格式方法,将经过优化的JSON对象内部的指定字段全部转为数组格式,并将统一格式后的JSON对象都添加到临时JSONArray对象中;
S5:基于压缩方法,判断临时JSONArray对象中的JSON对象是否含有子元素,若是,则进行递归,直至找到最内部的子元素为止,基于递归寻找过程获得一层结构的JSON文件,否则,直接返回,并将临时JSONArray对象压缩为一层结构的JSON文件。
优选的,S1:基于XSD文件路径和初始化后的FileReader类,获得临时JSON文件,包括:
S101:初始化FileReader类,并将XSD文件路径带入至初始化后的FileReader类,并将初始化后的FileReader类中的FileReader对象传入至初始化BufferedReader类;
S102:新建StringBuffer对象,调用BufferedReader类的readLine方法,循环读值直到读取到的值为空为止,并将读取到的值追加到StringBuffer对象中;
S103:初始化XmlMapper类和ObjectMapper类,调用初始化后的XmlMapper的readValue方法,将StringBuffer对象和Object.class 传入至初始化后的XmlMapper类,获得中间对象,调用ObjectMapper对象的writeValueAsString方法,并将中间对象代入至writeValueAsString方法,获得临时JSON文件。
优选的,S2:基于初始化后的JSONObject和临时JSON文件构建JSONArray,同时初始化临时JSONArray对象,包括:
初始化JSONObject;
并将临时JSON文件传入至初始化JSONObject;
调用JSONObject 的getString方法传入“element”获得element字符串;
通过传入element字符串构建JSONArray,同时初始化临时JSONArray对象。
优选的,S3:基于优化JSON方法,提取出JSON对象中的name、element、attribute属性,获得经过优化的JSON对象,包括:
初始化临时JSONArray对象;
遍历JSONArray,根据下标获取JSON对象;
基于优化JSON方法,提取出JSON对象中的name、element、attribute属性,获得经过优化的JSON对象。
优选的,基于优化JSON方法,提取出JSON对象中的name、element、attribute属性,获得经过优化的JSON对象,包括:
将初始化临时JSONArray对象后的临时JSON文件中的代码文本当作待提取代码文本;
确定出待提取代码文本中的所有种类的所有待定位字段,其中待定位字段包括:name、element、attribute;
基于待提取代码文本中包含的总行数和每行包含的代码字段总数,生成待提取代码文本的代码字段格局空矩阵;
基于每个种类的所有待定位字段在待提取代码文本中的所在行序数和所在列序数,确定出每个种类的所有待定位字段在代码字段格局空矩阵中的所有所在位置,并将每个种类的待定位字段对应的预设表征值填入至代码字段格局空矩阵中的对应所有所在位置,并将代码字段格局空矩阵中除当前确定出的所有所在位置以外剩余位置的矩阵元素设置为0,获得待提取代码文本的待提取字段格局分布矩阵;
基于待提取字段格局分布矩阵,在待提取代码文本中提取出每个种类的每个待定位字段的属性值字段;
将提取出的属性值字段与对应种类的待定位字段对应的属性种类进行对应,获得JSON对象中的name、element、attribute属性,并基于JSON对象中的name、element、attribute属性获得经过优化的JSON对象。
优选的,基于待提取字段格局分布矩阵,在待提取代码文本中提取出每个种类的每个待定位字段的属性值字段,包括:
确定出待提取字段格局分布矩阵和每种参考字段格局分布矩阵之间的相似度;
将最大相似度对应的参考字段格局分布矩阵中的每个种类的所有待定位字段与待提取字段格局分布矩阵中的每个种类的所有待定位字段进行一一对应,获得字段对应结果;
确定出参考字段格局分布矩阵中每个种类的每个待定位字段对应的属性值字段长度,并基于字段对应结果,确定出待提取字段格局分布矩阵中每个种类的每个待定位字段的属性值字段长度,并基于待提取字段格局分布矩阵中每个种类的每个待定位字段的属性值字段长度,在待提取代码文本中提取出每个种类的每个待定位字段的属性值字段。
优选的,S4:基于统一格式方法,将经过优化的JSON对象内部的指定字段全部转为数组格式,并将统一格式后的JSON对象都添加到临时JSONArray对象中,包括:
判断经过优化的JSON对象是否含有需要转换的name名称,若是,则通过getJSONObject方法获取JSON对象,基于最新获得的JSON对象再创建一个新的JSONArray;
通过JSONArray.put方法,传入下标0和JSON对象,再调用JSONObject.put方法传入name名称和JSONArray,将JSON对象内部的转换的name名称对应的指定字段全部转为数组格式,获得格式统一的JSON对象;
否则,将经过优化的JSON对象当作格式统一的JSON对象;
将格式统一的JSON对象全部添加到临时JSONArray对象中。
优选的,需要转换的name名称,包括但不限于element、attribute。
优选的,S5:基于压缩方法,判断临时JSONArray对象中的JSON对象是否含有子元素,若是,则进行递归,直至找到最内部的子元素为止,基于递归寻找过程获得一层结构的JSON文件,否则,直接返回,并将临时JSONArray对象压缩为一层结构的JSON文件,包括:
将临时JSONArray对象以及下标0传入压缩方法中,方法内部会根据下标获取JSON对象,并判断JSON对象中是否含有子element,若是,则获取子元素的名称,遍历临时JSONArray对象获取name名称与子元素的名称相匹配的JSONObject与其下标;
通过调用JSONObject.put方法,传入“element”以及已经带入JSONObject和下标的压缩方法,进行递归,直到找到最内部的元素为止,基于递归寻找过程获得一层结构的JSON文件;
否则,直接返回,并将临时JSONArray对象压缩为一层结构的JSON文件。
优选的,基于递归寻找过程获得一层结构的JSON文件,包括:
基于递归寻找过程中获得的子element,确定出临时JSONArray对象中的元素父子从属关系;
将利用从属结构表示元素父子从属关系,获得一层结构的JSON文件。
本发明相对于现有技术产生的有益效果为:利用对XSD文件转换生成的复杂的临时JSON文件进行压缩优化,可以实现将XSD文件转换为JSON文件过程中生成的多重嵌套且包含很多无用字段的临时JSON文件中的无用属性删除,并在删除后将其压缩至只有一层,即高效、操作简单地生成结构更加简单、内容更加清晰、被解析时更加便捷的JSON文件。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:
图1为本发明实施例中的一种XSD文件转换为JSON文件的方法流程图;
图2为本发明实施例中的基于XSD文件路径和初始化后的FileReader类获得临时JSON文件的方法流程图。
具体实施方式
以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。
实施例1:
本发明提供了一种XSD文件转换为JSON文件的方法,参考图1,包括:
S1:基于XSD文件路径和初始化后的FileReader类,获得临时JSON文件;
S2:基于初始化后的JSONObject和临时JSON文件构建JSONArray,同时初始化临时JSONArray对象;
S3:基于优化JSON方法,提取出JSON对象中的name、element、attribute属性,获得经过优化的JSON对象;
S4:基于统一格式方法,将经过优化的JSON对象内部的指定字段全部转为数组格式,并将统一格式后的JSON对象都添加到临时JSONArray对象中;
S5:基于压缩方法,判断临时JSONArray对象中的JSON对象是否含有子元素,若是,则进行递归,直至找到最内部的子元素为止,基于递归寻找过程获得一层结构的JSON文件,否则,直接返回,并将临时JSONArray对象压缩为一层结构的JSON文件,可供其他开发人员直接使用。
该实施例中的 XSD(Xml Schema Definition)是用来规定xml文件中某个元素的模型,可以规定一个Xml 文件中某个元素应该出现那些字段,哪些字段需要出现几次等;同时它也是一门语言。
XSD的数据结构中可包括简单(易)元素和复杂元素,这两个的区别在于内部含不含子元素和属性。
简单元素表示定义一个简单元素,名称为xxx,类型为yyy,default表示缺乏元素时,默认值为hello,fixed表示元素值只能为固定值world,default和fixed只能选其一或者都不出现。符合上述 XSD规则的Xml 可以是<xxx>hello</xxx>。另外简易元素的类型即基本数据类型,包括boolean、integer、decimal、string、date、time。即纯文本数据必须符合这些模式规定的文本,比如boolean,那么文本只能是true或者false,如果是integer那么文本必须是纯数字或者开头有正负号等。
复杂数据类型一般是指复合数据类型,即内部包含子元素,子元素可以是简单数据类型,也可以是复杂数据类型;定义复杂类型的语法中可以定义三种类型的复杂类型,一种是严格要求字段顺序的类型sequence,一种是不要求严格顺序的类型all,还有一种是要求字段二选一的choice,另外可以在属性中添加minOccur和maxOccur来限定字段出现的次数。
本发明实例中的 XSD文件中存在两个特殊的类型:xs:NCName、xs:NMTOKEN
在XSD(XML Schema Definition)中,xs:NCName是一种数据类型,它指定了XML命名规则中的非限定名称,也就是不带前缀的XML元素或属性名称。NCName代表XML名称中的非冒号字符序列,它必须以字母或者下划线开始,后面可以跟着任意数量的字母、数字、下划线或短横线。xs:NCName是XS(XML Schema)命名空间中的一个预定义类型,用于在XMLSchema中声明元素和属性的名称。
在XSD(XML Schema Definition)中,xs:NMTOKEN是一种数据类型,表示XML命名规则中的命名令牌(name token)。NMTOKEN代表XML名称中的字符序列,它可以包含字母、数字、下划线、短横线、句点、冒号、以及其他Unicode字符。但是,它不能包含空格或其他特殊字符。xs:NMTOKEN用于定义XML元素或属性的值,例如,用于定义XML文档中的ID属性或其他标识符。在XSD中,xs:NMTOKEN类型是一个预定义的数据类型,可以使用它来指定XML文档中的元素和属性值的有效性和格式。
目前市场上存在的几种将XSD文件转换为JSON文件的方法有:com.fasterxml.jackson.*、org.json.XML、JAXB和Jackson以上几种方式都存在问题,就是生成的JSON结构太复杂。
例如我要测试一个内容为:"<?xmlversion="1.0"encoding="UTF-8"?>
<xs:schema
xmlns:xs="http://www.w3.org/2001/XMLSchema"elementFormDefault="qualified">
<xs:elementname="root">
<xs:complexType>
<xs:sequence>
<xs:elementmaxOccurs="unbounded"ref="object"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:elementname="object">
<xs:complexType>
<xs:choice>
<xs:elementmaxOccurs="unbounded"ref="filed"/>
<xs:elementmaxOccurs="unbounded"ref="field"/>
</xs:choice>
<xs:attributename="name"use="required"type="xs:NCName"/>
</xs:complexType>
</xs:element>
<xs:elementname="filed">
<xs:complexType>
<xs:attributename="name"use="required"type="xs:NCName"/>
<xs:attributename="value"use="required"/>
</xs:complexType>
</xs:element>
<xs:elementname="field">
<xs:complexType>
<xs:attributename="name"use="required"type="xs:NCName"/>
<xs:attributename="value"use="required"type="xs:NMTOKEN"/>
</xs:complexType>
</xs:element>”
的xsd文件的转换。
若采用方案一(即com.fasterxml.jackson.*的方式),结果为:
{
"elementFormDefault": "qualified",
"element": [{
"name": "root",
"complexType": {
"sequence": {
"element": {
"maxOccurs": "unbounded",
"ref": "object"
}}}
}, {
"name": "object",
"complexType": {
"choice": {
"element": [{
"maxOccurs": "unbounded",
"ref": "filed"
}, {
"maxOccurs": "unbounded",
"ref": "field"
}]
},
"attribute": {
"name": "name",
"use": "required",
"type": "xs:NCName"
}}
}, {
"name": "filed",
"complexType": {
"attribute": [{
"name": "name",
"use": "required",
"type": "xs:NCName"
}, {
"name": "value",
"use": "required"
}]}
}, {
"name": "field",
"complexType": {
"attribute": [{
"name": "name",
"use": "required",
"type": "xs:NCName"
}, {
"name": "value",
"use": "required",
"type": "xs:NMTOKEN"
}]}}]}。
从结果来看用jackson转换生成的JSON结构并不比原xsd文件内容简单,外层element数组内含有的多个element除了必须的name属性以及可选的attribute属性外,还有一个ref字段用来指定其子element的名称。而complexType->sequence 以及complexType->choice 则表示的是子元素是按顺序出现还是选其一;而我们需要的只有name名称以及attribute属性,element之间的父子所属关系可以用JSON的从属结构来表示,不需要另外添加字段,所以jackson的转换结果很多都是冗余信息,而且若想解析还需要根据ref字段来进行判断,十分麻烦。
同样若采用方案二(即org.json.XML)方式,结果为:
"{
"xs:schema": {
"elementFormDefault": "qualified",
"xmlns:xs": "http://www.w3.org/2001/XMLSchema",
"xs:element": [{
"xs:complexType": {
"xs:sequence": {
"xs:element": {
"ref": "object",
"maxOccurs": "unbounded"
}}
},
"name": "root"
}, {
"xs:complexType": {
"xs:attribute": {
"use": "required",
"name": "name",
"type": "xs:NCName"
},
"xs:choice": {
"xs:element": [{
"ref": "filed",
"maxOccurs": "unbounded"
}, {
"ref": "field",
"maxOccurs": "unbounded"
}]}
},
"name": "object"
}, {
"xs:complexType": {
"xs:attribute": [{
"use": "required",
"name": "name",
"type": "xs:NCName"
}, {
"use": "required",
"name": "value"
}]
},
"name": "filed"
}, {
"xs:complexType": {
"xs:attribute": [{
"use": "required",
"name": "name",
"type": "xs:NCName"
}, {
"use": "required",
"name": "value",
"type": "xs:NMTOKEN"
}]
},
"name": "field"
}]}}”
与方式一不同的是,使用工具类转换的结果增加了xmlns:xs 这个命名空间,但仅从结构上看,与方式一几乎一样,只是冗余的数据会更多一点。
方案三(即JAXB和Jackson),一般不会去使用,因为操作起来相当麻烦,不仅需要手动执行脚本命令,还需要手动修改多个结果java对象的内容,还需要自己判断多个java类的从属关系,然后可调用jackson包中的方法将构建的java类转JSON;因为基本都需要人工执行,所以我们一般不考虑这种方式。
而利用该实施例提供的XSD文件转换为JSON文件的方法可对复杂JSON进行压缩优化。可以实现将多重嵌套、而且包含很多无用字段的JSON,压缩成只有一层,并且去除掉无用字段、本发明的主要功能是对由XSD映射过来的复杂JSON进行压缩优化,简便解析的同时也提高了传输效率。
利用Jackson 方式生成的JSON格式主要特征如下,首先整体是一个element数组,每个element元素都有name字段,有的内部还嵌套着element元素,表征其下层的所属关系,或者还有attribute字段表示该element的属性。另外还有elementFormDefault、complexType、sequence、ref等很多无用字段。使用本发明提供的方式其一可以将无用字段摒弃,其二可以将多层嵌套的element数组压缩成只有一层。
例如,针对相同的xsd文件,用Jackson 方式生成的JSON为:
"{
"elementFormDefault": "qualified",
"element": [{
"name": "root",
"complexType": {
"sequence": {
"element": {
"maxOccurs": "unbounded",
"ref": "object"
}}}
}, {
"name": "object",
"complexType": {
"choice": {
"element": [{
"maxOccurs": "unbounded",
"ref": "filed"
}, {
"maxOccurs": "unbounded",
"ref": "field"
}]
},
"attribute": {
"name": "name",
"use": "required",
"type": "xs:NCName"
}}
}, {
"name": "filed",
"complexType": {
"attribute": [{
"name": "name",
"use": "required",
"type": "xs:NCName"
}, {
"name": "value",
"use": "required"
}]}
}, {
"name": "field",
"complexType": {
"attribute": [{
"name": "name",
"use": "required",
"type": "xs:NCName"
}, {
"name": "value",
"use": "required",
"type": "xs:NMTOKEN"
}]}}]}”
而用本实施例提供的XSD文件转换为JSON文件的方法,转换的结果为:
"{
"name": "root",
"element": [{
"name": "object",
"attribute": [{
"use": "required",
"name": "name",
"type": "xs:NCName"
}],
"element": [{
"name": "filed",
"attribute": [{
"use": "required",
"name": "name",
"type": "xs:NCName"
}, {
"use": "required",
"name": "value"
}]
}, {
"name": "field",
"attribute": [{
"use": "required",
"name": "name",
"type": "xs:NCName"
}, {
"use": "required",
"name": "value",
"type": "xs:NMTOKEN"
}]}]}]}”
可以看到由本发明提供的方式转换获得的JSON文件,内容上比用Jackson少了将近一半,已经去除了“complexType”、“sequence”、“maxOccurs”等冗余字段;并且结构更清晰,由Jackson生成的结果,“root”,“object”,“field”等element,都是并列存在数组之内,从属关系用“ref”字段表示;而用本发明提供的方式,只有一层结构,最外层是“root”,内部是“object”,再内部是“field”等等,相较于其他方式这种格式更加好理解也更加便于解析。
本发明对临时JSON文件的压缩方法总共分三步:1. 优化Json;2. 统一格式;3.递归压缩;以下是对这三步的介绍:
优化JSON,主要作用是去掉无用字段,将每一个element的name,element,attribute等有效信息提取出来。过程如下,首先遍历每一个element对象判断是否为复合类型,是复合类型的,需要进行逐层判断并找到其下包含的element,将其提取出来;含有attribute属性的,需要将attribute属性提取出来,最后进行拼接,将name,element,attribute添加到一个JSON对象中。如此便可将冗余的字段属性去除掉,而只保留了必要的字段。不是复合类型的可直接转为一个JSON对象,最终将优化的JSON对象添加到一个JSON数组中。
统一格式,这一步主要是对JSON对象中的element和attribute属性进行判断是否为数组类型,不是数组的需要转成数组格式,这一步主要是为了使用数组下标,为后续算法做准备。
递归压缩,这一步是整个算法的核心,该方法需要传入两个参数,一个JSON数组以及下标tag。算法内部会根据传入的JSON数组以及下标获取到当前的JSON对象,并判断内部是否有子元素,若有则从数组中确定该子元素的下标,进行递归调用,若有多个子元素需分别进行递归。若没有子元素则可直接返回。
利用该实施例中提供的XSD文件转换为JSON文件的方法转换获得的JSON文件,相对于利用现有技术转换获得的结构更加简单,只用一层结构就可将element元素的从属关系表达出来;
内容也更加清晰,一个element元素内只有“name”,“attribute”,“element”,“type”,“use”等属性,其他如“elementFormDefault”,“complexType”等无用属性全部被去除;
使用解析起来更加方便,因为一个元素内部的“element”和“attribute”等可能存在多个的字段已全部用数组表示,想解析时只需要进行一个循环,逐层判断内部是否有“element”或者“complexType”,存在就遍历数组取出来即可。
利用对XSD文件转换生成的复杂的临时JSON文件进行压缩优化,可以实现将XSD文件转换为JSON文件过程中生成的多重嵌套且包含很多无用字段的临时JSON文件中的无用属性删除,并在删除后将其压缩至只有一层,即高效、操作简单地生成结构更加简单、内容更加清晰、被解析时更加便捷的JSON文件。
实施例2:
在实施例1的基础上,S1:基于XSD文件路径和初始化后的FileReader类,获得临时JSON文件,参考图2,包括:
S101:初始化FileReader类,并将XSD文件路径带入至初始化后的FileReader类,并将初始化后的FileReader类中的FileReader对象传入至初始化BufferedReader类;
S102:新建StringBuffer对象,调用BufferedReader类的readLine方法,循环读值直到读取到的值为空为止,并将读取到的值追加到StringBuffer对象中;
S103:初始化XmlMapper类和ObjectMapper类,调用初始化后的XmlMapper的readValue方法,将StringBuffer对象和Object.class 传入至初始化后的XmlMapper类,获得中间对象,调用ObjectMapper对象的writeValueAsString方法,并将中间对象代入至writeValueAsString方法,获得临时JSON文件。
实施例3:
在实施例1的基础上,S2:基于初始化后的JSONObject和临时JSON文件构建JSONArray,同时初始化临时JSONArray对象,包括:
初始化JSONObject;
并将临时JSON文件传入至初始化JSONObject;
调用JSONObject 的getString方法传入“element”获得element字符串;
通过传入element字符串构建JSONArray,同时初始化临时JSONArray对象。
实施例4:
在实施例1的基础上,S3:基于优化JSON方法,提取出JSON对象中的name、element、attribute属性,获得经过优化的JSON对象,包括:
初始化临时JSONArray对象;
遍历JSONArray,根据下标获取JSON对象;
基于优化JSON方法,提取出JSON对象中的name、element、attribute属性,获得经过优化的JSON对象。
利用该实施例中提供的XSD文件转换为JSON文件的方法转换获得的JSON文件内容也更加清晰,一个element元素内只有“name”,“attribute”,“element”等属性,其他如“elementFormDefault”,“complexType”等无用属性全部被去除,减少了JSON文件中的冗余信息。
实施例5:
在实施例4的基础上,基于优化JSON方法,提取出JSON对象中的name、element、attribute属性,获得经过优化的JSON对象,包括:
将初始化临时JSONArray对象后的临时JSON文件中的代码文本当作待提取代码文本;
确定出待提取代码文本中的所有种类的所有待定位字段,其中待定位字段包括:name、element、attribute;
基于待提取代码文本中包含的总行数和每行包含的代码字段总数,生成待提取代码文本的代码字段格局空矩阵(即为将待提取代码文本中所有单行包含的代码字段总数中的最大值当作代码字段格局空矩阵中每行元素的总数,并将待提取代码文本中包含的总行数当作代码字段格局空矩阵中每列元素的总数,代码字段格局空矩阵中的所有元素都为0,代码字段格局空矩阵即为表征待提取代码文本中的代码字段的分布格局(即代码字段总行数、所有单行中包含的代码字段总数中的最大值)的矩阵);
基于每个种类的所有待定位字段在待提取代码文本中的所在行序数和所在列序数,确定出每个种类的所有待定位字段在代码字段格局空矩阵中的所有所在位置(即:待定位字段在待提取代码文本中的所在行序数即为该待定位字段在代码字段格局空矩阵中的所在行序数,待定位字段在待提取代码文本中的所在列序数即为该待定位字段在代码字段格局空矩阵中的所在列序数),并将每个种类的待定位字段对应的预设表征值(即为预设的用于区分不同种类的待定位字段的表示数值,例如name、element、attribute依次对应的预设表征值为1、2、3)填入至代码字段格局空矩阵中的对应所有所在位置,并将代码字段格局空矩阵中除当前确定出的所有所在位置以外剩余位置的矩阵元素设置为0,获得待提取代码文本的待提取字段格局分布矩阵(即为表征待提取代码文本中的所有待定位字段在待提取代码文本中的分布格局的矩阵);
基于待提取字段格局分布矩阵,在待提取代码文本中提取出每个种类的每个待定位字段的属性值字段(即为表征JSON对象中的name、element、attribute属性的具体属性值的代码字段);
将提取出的属性值字段与对应种类的待定位字段对应的属性种类进行对应,获得JSON对象中的name、element、attribute属性,并基于JSON对象中的name、element、attribute属性获得经过优化的JSON对象。
上述过程基于初始化临时JSONArray对象后的临时JSON文件中的代码文本的待提取字段格局分布矩阵,在待提取代码文本中提取出每个种类的每个待定位字段的属性值字段,即实现JSON对象中的name、element、attribute属性的精准提取,以实现对JSON对象的优化,并便于临时JSON文件中的冗余信息的去除。
实施例6:
在实施例5的基础上,基于待提取字段格局分布矩阵,在待提取代码文本中提取出每个种类的每个待定位字段的属性值字段,包括:
确定出待提取字段格局分布矩阵和每种参考字段格局分布矩阵之间的相似度,包括:
式中,为待提取字段格局分布矩阵和参考字段格局分布矩阵之间的相似度,/>为待提取字段格局分布矩阵的总行数,/>为参考字段格局分布矩阵的总行数,为待提取字段格局分布矩阵的总行数和参考字段格局分布矩阵的总行数中的最小值,/>为待提取字段格局分布矩阵的总行数和参考字段格局分布矩阵的总行数中的最大值,/>为待提取字段格局分布矩阵第/>行包含的第一个种类的待定位字段的总数与参考字段格局分布矩阵第/>行包含的第一个种类的待定位字段的总数中的较小值,/>为待提取字段格局分布矩阵第/>行包含的第一个种类的待定位字段的总数与参考字段格局分布矩阵第/>行包含的第一个种类的待定位字段的总数中的较大值,/>为待提取字段格局分布矩阵中第/>行中包含的第/>个第一个种类的待定位字段在待提取字段格局分布矩阵中所处的列序数,/>为参考字段格局分布矩阵中第/>行中包含的第/>个第一个种类的待定位字段在参考字段格局分布矩阵中所处的列序数,/>为待提取字段格局分布矩阵第/>行包含的第二个种类的待定位字段的总数与参考字段格局分布矩阵第/>行包含的第二个种类的待定位字段的总数中的较小值,/>为待提取字段格局分布矩阵第行包含的第二个种类的待定位字段的总数与参考字段格局分布矩阵第/>行包含的第二个种类的待定位字段的总数中的较大值,/>为待提取字段格局分布矩阵中第/>行中包含的第/>个第二个种类的待定位字段在待提取字段格局分布矩阵中所处的列序数,/>为参考字段格局分布矩阵中第/>行中包含的第/>个第二个种类的待定位字段在参考字段格局分布矩阵中所处的列序数,/>为待提取字段格局分布矩阵第/>行包含的第三个种类的待定位字段的总数与参考字段格局分布矩阵第/>行包含的第三个种类的待定位字段的总数中的较小值,/>为待提取字段格局分布矩阵第/>行包含的第三个种类的待定位字段的总数与参考字段格局分布矩阵第/>行包含的第三个种类的待定位字段的总数中的较大值,为待提取字段格局分布矩阵中第/>行中包含的第/>个第三个种类的待定位字段在待提取字段格局分布矩阵中所处的列序数,/>为参考字段格局分布矩阵中第/>行中包含的第/>个第三个种类的待定位字段在参考字段格局分布矩阵中所处的列序数,/>为待提取字段格局分布矩阵的总列数,/>为参考字段格局分布矩阵的总列数;
将最大相似度对应的参考字段格局分布矩阵中的每个种类的所有待定位字段与待提取字段格局分布矩阵中的每个种类的所有待定位字段进行一一对应(即为基于从左至右的顺序,将最大相似度对应的参考字段格局分布矩阵中每行中包含的每个种类的所有待定位字段的所在位置与待提取字段格局分布矩阵中每行中包含的每个种类的所有待定位字段进行一一对应),获得字段对应结果;
确定出参考字段格局分布矩阵中每个种类的每个待定位字段对应的属性值字段长度(该参考字段格局分布矩阵中的待定位字段对应的属性值字段长度是预设的,例如包含两个字段),并基于字段对应结果,确定出待提取字段格局分布矩阵中每个种类的每个待定位字段的属性值字段长度(即为将字段对应结果中待提取字段格局分布矩阵中每个待定位字段的属性值字段长度设置为其在参考字段格局分布矩阵中对应待定位字段的属性值字段长度),并基于待提取字段格局分布矩阵中每个种类的每个待定位字段的属性值字段长度(即为将待定位字段之后相邻的字段长度为对应属性值字段长度的字段当作待定位字段的属性值字段),在待提取代码文本中提取出每个种类的每个待定位字段的属性值字段。
该实施例基于待提取字段格局分布矩阵和每种参考字段格局分布矩阵之间的相似度,筛选出最终用于确定待提取字段格局分布矩阵中的待提取字段的属性值字段时参考的参考字段格局分布矩阵,进而实现待定位字段的属性值字段的准确提取。
实施例7:
在实施例1的基础上,S4:基于统一格式方法,将经过优化的JSON对象内部的指定字段全部转为数组格式,并将统一格式后的JSON对象都添加到临时JSONArray对象中,包括:
判断经过优化的JSON对象是否含有需要转换的name名称,若是,则通过getJSONObject方法获取JSON对象,基于最新获得的JSON对象再创建一个新的JSONArray;
通过JSONArray.put方法,传入下标0和JSON对象,再调用JSONObject.put方法传入name名称和JSONArray,将JSON对象内部的转换的name名称对应的指定字段全部转为数组格式,获得格式统一的JSON对象;
否则,将经过优化的JSON对象当作格式统一的JSON对象;
将格式统一的JSON对象全部添加到临时JSONArray对象中。
该实施例为后续生成只有一层结构的JSON文件作出准备。
实施例8:
在实施例7的基础上,需要转换的name名称,包括但不限于element、attribute。
实施例9:
在实施例1的基础上,S5:基于压缩方法,判断临时JSONArray对象中的JSON对象是否含有子元素,若是,则进行递归,直至找到最内部的子元素为止,基于递归寻找过程获得一层结构的JSON文件,否则,直接返回,并将临时JSONArray对象压缩为一层结构的JSON文件,包括:
将临时JSONArray对象以及下标0传入压缩方法中,方法内部会根据下标获取JSON对象,并判断JSON对象中是否含有子element,若是,则获取子元素的名称,遍历临时JSONArray对象获取name名称与子元素的名称相匹配的JSONObject与其下标;
通过调用JSONObject.put方法,传入“element”以及已经带入JSONObject和下标的压缩方法,进行递归,直到找到最内部的元素为止,基于递归寻找过程获得一层结构的JSON文件;
否则,直接返回,并将临时JSONArray对象压缩为一层结构的JSON文件。
上述过程实现JSON对象中的元素父子从属关系的提取,进而将文件压缩生成只有一层结构的JSON文件。
实施例10:
在实施例9的基础上,基于递归寻找过程获得一层结构的JSON文件,包括:
基于递归寻找过程中获得的子element,确定出临时JSONArray对象中的元素父子从属关系;
将利用从属结构表示元素父子从属关系,获得一层结构的JSON文件。
上述过程实现了基于JSON对象中的元素父子从属关系生成只有一层结构的JSON文件。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (7)

1.一种XSD文件转换为JSON文件的方法,其特征在于,包括:
S1:基于XSD文件路径和初始化后的FileReader类,获得临时JSON文件;
S2:基于初始化后的JSONObject和临时JSON文件构建JSONArray,同时初始化临时JSONArray对象;
S3:基于优化JSON方法,提取出JSON对象中的name、element、attribute属性,获得经过优化的JSON对象;
S4:基于统一格式方法,将经过优化的JSON对象内部的指定字段全部转为数组格式,并将统一格式后的JSON对象都添加到临时JSONArray对象中;
S5:基于压缩方法,判断临时JSONArray对象中的JSON对象是否含有子元素,若是,则进行递归,直至找到最内部的子元素为止,基于递归寻找过程获得一层结构的JSON文件,否则,直接返回,并将临时JSONArray对象压缩为一层结构的JSON文件;
其中,步骤S3:基于优化JSON方法,提取出JSON对象中的name、element、attribute属性,获得经过优化的JSON对象,包括:
初始化临时JSONArray对象;
遍历JSONArray,根据下标获取JSON对象;
基于优化JSON方法,提取出JSON对象中的name、element、attribute属性,获得经过优化的JSON对象;
其中,基于优化JSON方法,提取出JSON对象中的name、element、attribute属性,获得经过优化的JSON对象,包括:
将初始化临时JSONArray对象后的临时JSON文件中的代码文本当作待提取代码文本;
确定出待提取代码文本中的所有种类的所有待定位字段,其中待定位字段包括:name、element、attribute;
基于待提取代码文本中包含的总行数和每行包含的代码字段总数,生成待提取代码文本的代码字段格局空矩阵;
基于每个种类的所有待定位字段在待提取代码文本中的所在行序数和所在列序数,确定出每个种类的所有待定位字段在代码字段格局空矩阵中的所有所在位置,并将每个种类的待定位字段对应的预设表征值填入至代码字段格局空矩阵中的对应所有所在位置,并将代码字段格局空矩阵中除当前确定出的所有所在位置以外剩余位置的矩阵元素设置为0,获得待提取代码文本的待提取字段格局分布矩阵;
基于待提取字段格局分布矩阵,在待提取代码文本中提取出每个种类的每个待定位字段的属性值字段;
将提取出的属性值字段与对应种类的待定位字段对应的属性种类进行对应,获得JSON对象中的name、element、attribute属性,并基于JSON对象中的name、element、attribute属性获得经过优化的JSON对象;
其中,基于待提取字段格局分布矩阵,在待提取代码文本中提取出每个种类的每个待定位字段的属性值字段,包括:
确定出待提取字段格局分布矩阵和每种参考字段格局分布矩阵之间的相似度;
将最大相似度对应的参考字段格局分布矩阵中的每个种类的所有待定位字段与待提取字段格局分布矩阵中的每个种类的所有待定位字段进行一一对应,获得字段对应结果;
确定出参考字段格局分布矩阵中每个种类的每个待定位字段对应的属性值字段长度,并基于字段对应结果,确定出待提取字段格局分布矩阵中每个种类的每个待定位字段的属性值字段长度,并基于待提取字段格局分布矩阵中每个种类的每个待定位字段的属性值字段长度,在待提取代码文本中提取出每个种类的每个待定位字段的属性值字段。
2.根据权利要求1所述的XSD文件转换为JSON文件的方法,其特征在于,S1:基于XSD文件路径和初始化后的FileReader类,获得临时JSON文件,包括:
S101:初始化FileReader类,并将XSD文件路径带入至初始化后的FileReader类,并将初始化后的FileReader类中的FileReader对象传入至初始化BufferedReader类;
S102:新建StringBuffer对象,调用BufferedReader类的readLine方法,循环读值直到读取到的值为空为止,并将读取到的值追加到StringBuffer对象中;
S103:初始化XmlMapper类和ObjectMapper类,调用初始化后的XmlMapper的readValue方法,将StringBuffer对象和Object.class 传入至初始化后的XmlMapper类,获得中间对象,调用ObjectMapper对象的writeValueAsString方法,并将中间对象代入至writeValueAsString方法,获得临时JSON文件。
3.根据权利要求1所述的XSD文件转换为JSON文件的方法,其特征在于,S2:基于初始化后的JSONObject和临时JSON文件构建JSONArray,同时初始化临时JSONArray对象,包括:
初始化JSONObject;
并将临时JSON文件传入至初始化JSONObject;
调用JSONObject 的getString方法传入“element”获得element字符串;
通过传入element字符串构建JSONArray,同时初始化临时JSONArray对象。
4.根据权利要求1所述的XSD文件转换为JSON文件的方法,其特征在于,S4:基于统一格式方法,将经过优化的JSON对象内部的指定字段全部转为数组格式,并将统一格式后的JSON对象都添加到临时JSONArray对象中,包括:
判断经过优化的JSON对象是否含有需要转换的name名称,若是,则通过getJSONObject方法获取JSON对象,基于最新获得的JSON对象再创建一个新的JSONArray;
通过JSONArray.put方法,传入下标0和JSON对象,再调用JSONObject.put方法传入name名称和JSONArray,将JSON对象内部的转换的name名称对应的指定字段全部转为数组格式,获得格式统一的JSON对象;
否则,将经过优化的JSON对象当作格式统一的JSON对象;
将格式统一的JSON对象全部添加到临时JSONArray对象中。
5.根据权利要求4所述的XSD文件转换为JSON文件的方法,其特征在于,需要转换的name名称,包括element、attribute。
6.根据权利要求1所述的XSD文件转换为JSON文件的方法,其特征在于,S5:基于压缩方法,判断临时JSONArray对象中的JSON对象是否含有子元素,若是,则进行递归,直至找到最内部的子元素为止,基于递归寻找过程获得一层结构的JSON文件,否则,直接返回,并将临时JSONArray对象压缩为一层结构的JSON文件,包括:
将临时JSONArray对象以及下标0传入压缩方法中,方法内部会根据下标获取JSON对象,并判断JSON对象中是否含有子element,若是,则获取子元素的名称,遍历临时JSONArray对象获取name名称与子元素的名称相匹配的JSONObject与其下标;
通过调用JSONObject.put方法,传入“element”以及已经带入JSONObject和下标的压缩方法,进行递归,直到找到最内部的元素为止,基于递归寻找过程获得一层结构的JSON文件;
否则,直接返回,并将临时JSONArray对象压缩为一层结构的JSON文件。
7.根据权利要求6所述的XSD文件转换为JSON文件的方法,其特征在于,基于递归寻找过程获得一层结构的JSON文件,包括:
基于递归寻找过程中获得的子element,确定出临时JSONArray对象中的元素父子从属关系;
将利用从属结构表示元素父子从属关系,获得一层结构的JSON文件。
CN202311785019.7A 2023-12-25 2023-12-25 一种xsd文件转换为json文件的方法 Active CN117454846B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311785019.7A CN117454846B (zh) 2023-12-25 2023-12-25 一种xsd文件转换为json文件的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311785019.7A CN117454846B (zh) 2023-12-25 2023-12-25 一种xsd文件转换为json文件的方法

Publications (2)

Publication Number Publication Date
CN117454846A CN117454846A (zh) 2024-01-26
CN117454846B true CN117454846B (zh) 2024-03-26

Family

ID=89593246

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311785019.7A Active CN117454846B (zh) 2023-12-25 2023-12-25 一种xsd文件转换为json文件的方法

Country Status (1)

Country Link
CN (1) CN117454846B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117744597B (zh) * 2024-02-19 2024-04-26 广州睿帆科技有限公司 具有错误处理机制的xsd到json转换方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102185901A (zh) * 2011-04-19 2011-09-14 北京神州数码思特奇信息技术股份有限公司 一种客户端报文转换方法
CN102546599A (zh) * 2011-12-16 2012-07-04 深圳中兴网信科技有限公司 一种实现不同协议数据等价互转的方法
CN104410667A (zh) * 2014-10-31 2015-03-11 北京思特奇信息技术股份有限公司 一种xml报文到json报文的转换方法及系统
CN113515287A (zh) * 2021-07-27 2021-10-19 上海工业自动化仪表研究院有限公司 一种Restful接口返回值自动化检查矫正方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8291230B2 (en) * 2009-01-20 2012-10-16 International Business Machines Corporation Method and system for signing JavaScript object notation (JSON) messages
US9971574B2 (en) * 2014-10-31 2018-05-15 Oracle International Corporation JSON stylesheet language transformation

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102185901A (zh) * 2011-04-19 2011-09-14 北京神州数码思特奇信息技术股份有限公司 一种客户端报文转换方法
CN102546599A (zh) * 2011-12-16 2012-07-04 深圳中兴网信科技有限公司 一种实现不同协议数据等价互转的方法
CN104410667A (zh) * 2014-10-31 2015-03-11 北京思特奇信息技术股份有限公司 一种xml报文到json报文的转换方法及系统
CN113515287A (zh) * 2021-07-27 2021-10-19 上海工业自动化仪表研究院有限公司 一种Restful接口返回值自动化检查矫正方法

Also Published As

Publication number Publication date
CN117454846A (zh) 2024-01-26

Similar Documents

Publication Publication Date Title
US9804837B2 (en) System and method for creating, managing, and reusing schema type definitions in services oriented architecture services, grouped in the form of libraries
US8121976B2 (en) Method and apparatus for converting legacy programming language data structures to schema definitions
US7853621B2 (en) Integrating medical data and images in a database management system
US8346737B2 (en) Encoding of hierarchically organized data for efficient storage and processing
US7263654B2 (en) System and method for generating optimized binary representation of an object tree
JP4615827B2 (ja) 文書の構造化された記述を圧縮するための方法
CN117454846B (zh) 一种xsd文件转换为json文件的方法
CN1320454C (zh) 用于处理xml对象的程序设计语言扩展及相关应用
US7680333B2 (en) System and method for binary persistence format for a recognition result lattice
US8762410B2 (en) Document level indexes for efficient processing in multiple tiers of a computer system
US20070083538A1 (en) Generating XML instances from flat files
US7720969B2 (en) Description document for a service offered by a server in a communication network and method of validating a multimedia document
US9535966B1 (en) Techniques for aggregating data from multiple sources
US20080098018A1 (en) Secondary lazy-accessible serialization of electronic content
CA2438176A1 (en) Xml-based multi-format business services design pattern
CN1504925A (zh) 用于导入和导出分层结构化数据的方法和计算机可读介质
US20060212800A1 (en) Method and system for sequentially accessing compiled schema
US9286272B2 (en) Method for transformation of an extensible markup language vocabulary to a generic document structure format
CN108664546B (zh) Xml数据结构转换方法和装置
US8341514B2 (en) Using static data in a markup language
WO2023077732A1 (zh) 面向数据可视化大屏的知识可视化开发方法及系统
O'Connor et al. Desirable properties for XML update mechanisms
CN114611500A (zh) 表达式处理方法、装置、电子设备及计算机可读存储介质
US7735001B2 (en) Method and system for decoding encoded documents
CN101617307B (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