CN116882366A - 标记型报文的结构转换方法、装置、电子产品和介质 - Google Patents
标记型报文的结构转换方法、装置、电子产品和介质 Download PDFInfo
- Publication number
- CN116882366A CN116882366A CN202311146068.6A CN202311146068A CN116882366A CN 116882366 A CN116882366 A CN 116882366A CN 202311146068 A CN202311146068 A CN 202311146068A CN 116882366 A CN116882366 A CN 116882366A
- Authority
- CN
- China
- Prior art keywords
- message
- tag
- label
- matrix
- body data
- 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
- 238000000034 method Methods 0.000 title claims abstract description 40
- 238000006243 chemical reaction Methods 0.000 title claims abstract description 22
- 239000011159 matrix material Substances 0.000 claims abstract description 109
- 238000012545 processing Methods 0.000 claims abstract description 16
- 238000004590 computer program Methods 0.000 claims description 5
- 239000003550 marker Substances 0.000 claims description 4
- 230000005540 biological transmission Effects 0.000 abstract description 7
- 238000004519 manufacturing process Methods 0.000 abstract description 5
- 238000004364 calculation method Methods 0.000 abstract description 4
- 238000010586 diagram Methods 0.000 description 12
- 230000006870 function Effects 0.000 description 12
- 230000008569 process Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 239000004020 conductor Substances 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 210000001503 joint Anatomy 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/12—Use of codes for handling textual entities
- G06F40/151—Transformation
- G06F40/154—Tree transformation for tree-structured or markup documents, e.g. XSLT, XSL-FO or stylesheets
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/103—Formatting, i.e. changing of presentation of documents
- G06F40/117—Tagging; Marking up; Designating a block; Setting of attributes
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Document Processing Apparatus (AREA)
Abstract
本发明公开了标记型报文的结构转换方法、装置、电子产品和计算机可读存储介质。本发明获取第一标记型报文中的报文体,将报文体进行矩阵化得到二维的报文矩阵,遍历报文矩阵中每一层级的所有标签体矩阵,获取标签及对应的标签体数据,判别标签体数据的类型,并得到四要素的对应关系,根据四要素对应关系生成第二标记型报文。本发明采用矩阵显性、结构化表征层级关系以便计算机软硬件处理;本发明遍历时占用存储资源少,计算效率高。本发明利用标记型报文结构化后的内在规律进行类型判别,判别方法简单、可靠、高效。本发明能够实现文从XML报文到JSON结构简单、高效和稳定的转换,便于晶圆生产过程中各个***间信息的传输和存储。
Description
技术领域
本发明属于信息处理技术领域。特别地,涉及标记型报文的结构转换方法、装置、电子产品和计算机可读存储介质,可用于需要报文信息存储交换的场合。
背景技术
信息存储和交换的报文结构都需要约定,以便收发双方进行解析并提取其中的内容。现有主流报文结构包括XML和JSON。XML(Extensible Markup Language)是一种没有使用预定义标记的报文结构,任何符号都可以组合成标签,通过标签的声明,在起始标签与尾标签之间携带需要存储或者传递的信息。JSON(JavaScript Object Notation)是一种轻量级的报文交换结构,它基于ECMAScript的一个子集,通过使用JavaScript语法来描述报文内容,具备简洁和清晰的层次结构。JSON相比XML最大的不同之处是没有起始标签和尾标签,可以不使用保留字,这就意味着JSON比XML更小、更快、更易于人编写和阅读、更易于生成和解析。
由于早期的ERP和MES***都基于XML报文的报文进行信息传输,而采用新架构的***都是使用JSON结构的报文进行信息传输,两种***采用不同的报文格式导致***之间报文的存储和传输需要进行转换。
目前已存在多种将XML转化为JSON的方法,虽都可满足基本使用需求,但为适配各个***做了兼容性处理,这些方法存在解析速度慢,结构转换后的报文内容冗余的问题。对于半导体行业中与ERP和MES对接的报文转换***,这些转换方法不能满足晶圆生产过程中的报文信息传输和存储过程中对于简单、高效和稳定的需求。
发明内容
本发明的目的在于实现报文从XML报文到JSON结构简单、高效和稳定的转换,便于晶圆生产过程中各个***间信息的传输和存储,以解决类似上述背景技术中提出的问题。
为实现上述目的,第一方面,本发明提供了一种标记型报文的结构转换方法,包括:
获取第一标记型报文中的报文体,其中,所述报文体由标签体组成,标签体包括标签和标签体数据,标签包括首标签和尾标签,标签体数据位于首标签和尾标签之间,非嵌套标签体的标签体数据中不含子标签体,嵌套标签体的标签体数据中含有子标签体;
将报文体进行矩阵化得到二维的报文矩阵;其中,所述报文矩阵中采用矩阵行元素的向右缩进表示标签体层级顺序并得到对应的标签体矩阵;
从报文矩阵中第一列元素开始,按照层级顺序依次遍历报文矩阵中每一层级的所有标签体矩阵,获取标签及对应的标签体数据,判别标签体数据的类型,并得到标签、标签层级顺序、标签体数据及其类型四个要素的对应关系;
采用得到的标签、标签层级顺序、标签体数据及其类型四个要素的对应关系,按照第二标记型报文的报文结构生成第二标记型报文。
本发明一些实施例中,报文矩阵的两个维度中,第一维度代表报文体的标签层级,记为列轴X,第二维度代表报文体的长度,记为行轴Y;报文矩阵由标签体矩阵嵌套构成,同级标签体矩阵沿行轴Y方向排列,标签体矩阵的子标签体矩阵沿列轴X方向排列;标签体矩阵的在报文矩阵的起始位置记为(y,x),y是标签体矩阵的起始行,x是标签体矩阵的起始列,等于标签体的标签最高级别;非嵌套标签体的首标签、标签体内容和尾标签依次排成的标签体矩阵,嵌套标签体转换成m/>的标签体矩阵,首标签位置为(y,x),尾标签位置为(y+n-1,x),子标签体矩阵的起始位置为(y+1,x+1),并且是维度为的标签体矩阵。
本发明一些实施例中,第一标记型报文是XML报文,第二标记型报文是JSON报文。
本发明一些实施例中,先找到XML报文中声明结尾标记“?>”的位置,然后从XML报文中“?>”之后的位置开始到报文结束位置进行截取,从而获得的XML报文中的报文体。
本发明一些实施例中,利用得到的标签、标签层级顺序、标签体数据及其类型四个要素的对应关系,按照递归执行顺序,组合各个标签和标签体数据,最终生成JSON报文。
本发明一些实施例中,所述标签体数据类型包括对象类、数组类和值类,判别标签体数据的类型时,针对标签体矩阵第一列中的标签,如果标签重复,则对应的标签体数据为数组;如果标签完整且唯一,则对应的标签体数据为对象;如果标签仅存在首标签,则对应的标签体数据为值。
本发明一些实施例中,遍历报文矩阵中每一层级的所有标签体矩阵时,先读取报文矩阵的第一列,获取第一列元素中的标签和对应的第二层级标签体矩阵,用获取的标签体矩阵进行下一层级的标签体矩阵遍历,以此类推,进行其他低层级的遍历,直到报文矩阵读取结束。
第二方面,本发明提供了一种标记型报文的结构转换装置,包括:
报文体获取单元,用于获取第一标记型报文中的报文体;其中,所述报文体由标签体组成,标签体包括标签和标签体数据,标签包括首标签和尾标签,标签体数据位于首标签和尾标签之间,非嵌套标签体的标签体数据中不含子标签体,嵌套标签体的标签体数据中含有子标签体;
报文体矩阵化模块,用于将报文体进行矩阵化得到二维的报文矩阵;其中,所述报文矩阵中采用矩阵行元素的向右缩进表示标签体层级顺序并得到对应的标签体矩阵;
报文矩阵处理单元,用于从报文矩阵中第一列元素开始,按照层级顺序依次遍历报文矩阵中每一层级的所有标签体矩阵,获取标签及对应的标签体数据,判别标签体数据的类型,并得到标签、标签层级顺序、标签体数据及其类型四个要素的对应关系;
报文生成单元,用于采用得到的标签、标签层级顺序、标签体数据及其类型四个要素的对应关系,按照第二标记型报文的报文结构生成第二标记型报文。
第三方面,本发明提供了一种电子产品,包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行所述的标记型报文的结构转换方法。
第四方面,本发明提供了一种计算机可读存储介质,存储有计算机程序,其中,所述计算机程序被处理器执行时实现所述的标记型报文的结构转换方法。
有益效果:本发明采用将标记型报文矩阵化使得标记型报文中层级关系得以显性、结构化表征,便于计算机软硬件处理;本发明遍历时每次调用一列元素进行处理,占用存储资源少,计算效率高。本发明利用标记型报文结构化后的内在规律进行类型判别,判别方法简单、可靠、高效。本发明能够实现文从XML报文到JSON结构简单、高效和稳定的转换,便于晶圆生产过程中各个***间信息的传输和存储。
附图说明
图1为本发明实施例中标记型报文的结构转换方法的流程图。
图2为本发明实施例中XML报文的示例图。
图3为本发明实施例中XML报文的截取方法示例图。
图4为本发明实施例中报文矩阵的示例图。
图5为本发明实施例中获取标签及对应的标签体数据的示例图。
图6为本发明实施例中获取标签及对应的标签体数据的另一示例图。
图7为本发明实施例中标签体数据的类型为数组的示例图。
图8为本发明实施例中标签体数据的类型为对象的示例图。
图9为本发明实施例中标签体数据的类型为值的示例图。
图10为本发明实施例中四要素对应关系的示例图。
图11为本发明实施例中得到的JSON报文示例图。
图12为本发明实施例中标记型报文的结构转换装置的组成原理图。
图13为本发明实施例电子产品的组成原理图。
具体实施方式
以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。
需要说明的是,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
如图1所示,本发明于一实施例中的标记型报文的结构转换方法,包括:
S100获取第一标记型报文中的报文体,其中,所述报文体由标签体组成,标签体包括标签和标签体数据,标签包括首标签和尾标签,标签体数据位于首标签和尾标签之间,非嵌套标签体的标签体数据中不含子标签体,嵌套标签体的标签体数据中含有子标签体;
S200将报文体进行矩阵化得到二维的报文矩阵;其中,所述报文矩阵中采用矩阵行元素的向右缩进表示标签体层级顺序并得到对应的标签体矩阵;
S300从报文矩阵中第一列元素开始,按照层级顺序依次遍历报文矩阵中每一层级的所有标签体矩阵,获取标签及对应的标签体数据,判别标签体数据的类型,并得到标签、标签层级顺序、标签体数据及其类型四个要素的对应关系;
S400采用得到的标签、标签层级顺序、标签体数据及其类型四个要素的对应关系,按照第二标记型报文的报文结构生成第二标记型报文。
本发明的一些实施例,用于导体行业中与ERP和MES对接的报文转换***,第一标记型报文是XML报文,第二标记型报文是JSON报文。
X获取第一标记型报文中的报文体,就是分离XML报文声明和携带的内容。根据W3C标准,声明以“<?”开始,以“?>”结束,图2所示的XML报文第一行是XML标准声明,它定义XML的版本为1.0和所使用的编码utf-8。所以先找到XML报文中声明结尾标记“?>”的位置,然后从XML报文中“?>”之后的位置开始到报文结束位置进行截取,从而获得的XML报文中的报文体,如图3所示。
报文矩阵的两个维度中,第一维度代表报文体的标签层级,记为列轴X,第二维度代表报文体的长度,记为行轴Y;报文矩阵由标签体矩阵嵌套构成,同级标签体矩阵沿行轴Y方向排列,标签体矩阵的子标签体矩阵沿列轴X方向排列;标签体矩阵的在报文矩阵的起始位置记为(y,x),y是标签体矩阵的起始行,x是标签体矩阵的起始列,等于标签体的标签最高级别;非嵌套标签体的首标签、标签体内容和尾标签依次排成1×3的标签体矩阵,嵌套标签体转换成m×n的标签体矩阵,首标签位置为(y,x),尾标签位置为(y+n-1,x),子标签体矩阵的起始位置为(y+1,x+1),并且是维度为(m-2)×(n-1)的标签体矩阵。
将报文体进行矩阵化得到二维的报文矩阵的主要作用是使标记型报文中层级关系得以显性、结构化表征,便于计算机处理。具体操作为:将XML报文每一层级的标签,作为矩阵每一列的元素,如矩阵的第一列元素代表XML报文的第一层级标签,第二列元素代表归属于第一列元素的子集,即第二层级标签与第一层级的包含关系。以此类推第三层级至XML报文结束。经过处理,一维的报文的XML报文转换为二维,如图4所示,Y轴代表的XML报文长度的竖向属性,X轴代表的层级深度的横向属性。
本发明的一些实施例中,遍历报文矩阵中每一层级的所有标签体矩阵时,先读取报文矩阵的第一列,获取第一列元素中的标签和对应的第二层级标签体矩阵,用获取的标签体矩阵进行下一层级的标签体矩阵遍历,以此类推,进行其他低层级的遍历,直到报文矩阵读取结束。本发明的遍历方式,每次调用一列元素进行处理,占用存储资源少,计算效率高。
获取标签及对应的标签体数据,可以采用有一个输入变量和两个输出变量的模块,传入报文矩阵或者标签体矩阵,待处理后,传出该传入报文矩阵或者标签体矩阵所携带的最高层标签及其标签内部所包含的标签体数据。如传入图4所示的标签体矩阵后,会抓取“msg”标签,并输出“msg”标签所包含的新的标签体矩阵,如图5所示。如果将该矩阵重新传入此步骤,则会输出“msgHeader”和“msgBody”两个标签及其对应的两个XML标签体矩阵,输出结果如图6所示,以此类推直至矩阵读取结束。
所述标签体数据类型包括对象类、数组类和值类,判别标签体数据的类型时,针对标签体矩阵第一列中的标签,如果标签重复,则对应的标签体数据为数组,如图7所示,左边的第一列都为标签索引,此时“vendorConstraintSet”出现多次(粗线框所示),则该类型为数组(Array);如果标签完整且唯一,即首尾标签都存在,则对应的标签体数据为对象,如图8所示,“msgBody”所携带的下一层XML矩阵包含标签信息(粗线框部分),所以该类型为对象(Object);如果标签仅存在首标签,或者除上述两种情况,则对应的标签体数据为值(string),如图9粗线框所示。
本发明一些实施例中,利用得到的标签、标签层级顺序、标签体数据及其类型四个要素的对应关系,按照递归执行顺序,组合各个标签和标签体数据,最终生成JSON报文。
如图7-图9所示,“msg”标签体数据的类型为对象(Object)则获取其子标签体矩阵,判断子标签题矩阵携带的标签体数据的类型,“msgBody”标签体数据的类型为对象(Object)则获取其子标签体矩阵;“vendorConstraintSet”标签体数据的类型为对象(Object),判断子标签题矩阵携带的标签体数据的类型,“waferQty”标签体数据的类型为值(string),则将把值“13”和“14”对应到“waferQty”标签。到的标签、标签层级顺序、标签体数据及其类型四个要素的对应关系如图10所示。
最后,利用得到的标签、标签层级顺序、标签体数据及其类型四个要素的对应关系,按照递归执行顺序,组合各个标签和标签体数据,最终生成JSON报文,如图11所示。
如图12所示,本发明于一实施例中的标记型报文的结构转换装置包括:
报文体获取单元,用于获取第一标记型报文中的报文体;其中,所述报文体由标签体组成,标签体包括标签和标签体数据,标签包括首标签和尾标签,标签体数据位于首标签和尾标签之间,非嵌套标签体的标签体数据中不含子标签体,嵌套标签体的标签体数据中含有子标签体;
报文体矩阵化模块,用于将报文体进行矩阵化得到二维的报文矩阵;其中,所述报文矩阵中采用矩阵行元素的向右缩进表示标签体层级顺序并得到对应的标签体矩阵;
报文矩阵处理单元,用于从报文矩阵中第一列元素开始,按照层级顺序依次遍历报文矩阵中每一层级的所有标签体矩阵,获取标签及对应的标签体数据,判别标签体数据的类型,并得到标签、标签层级顺序、标签体数据及其类型四个要素的对应关系;
报文生成单元,用于采用得到的标签、标签层级顺序、标签体数据及其类型四个要素的对应关系,按照第二标记型报文的报文结构生成第二标记型报文。
本发明于一实施例中提供了一种具体实施方式中的电子产品,如图13所示,所述电子设备包括至少一个处理器,以及与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行上述标记型报文的结构转换方法。
其中,存储器和处理器采用总线方式连接,总线可以包括任意数量的互联的总线和桥,总线将一个或多个处理器和存储器的各种电路连接在一起。总线还可以通过接口将诸如***设备、稳压器和功率管理电路等之类的各种其他电路连接在一起,这些都是本领域所公知的。接口在总线和收发机之间提供接口,例如通信接口、用户接口。收发机可以是一个元件,也可以是多个元件,比如多个接收器和发送器,提供用于在传输介质上与各种其他装置通信的单元。经处理器处理的数据通过天线在无线介质上进行传输,进一步,天线还接收数据并将数据传送给处理器。
处理器负责管理总线和通常的处理,还可以提供各种功能,包括定时,***接口,电压调节、电源管理以及其他控制功能。而存储器可以被用于存储处理器在执行操作时所使用的数据。
本发明于一实施例中提供了一种计算机可读存储介质,存储有计算机程序,计算机程序被处理器执行时实现上述方法实施例。
本领域技术人员通过上述说明可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括但不限于U盘、移动硬盘、磁性存储器、光学存储器等各种可以存储程序代码的介质。
下面是本发明一些实施例中以程序体现的具体实现方式:
从XML报文的报文中提取报文内容(代码实现):
function getXML(xmlData) {
// 查找声明结束的内容标记
let index = xmlData.lastIndexOf('?>') + 2;
// 截取内容信息
if (index>xmlData.length)
console.error('no more data!');
// 截取并返回值
return xmlData.substring(index);
}
对XML矩阵的第一列元素进行提取,将提取的XML报文放入暂存区中(代码实现):
function getXMLObjectTags(xmlData, tags) {
try {
// 定义正则,先抓取第一个标记
let tag = /<.*?>/i.exec(xmlData)[0];
tag = tag.substring(1, tag.length -1);
// 抓取标签中的内容
let content = getXMLObjectContent(xmlData, tag);
// 对标签中的内容进行类型判断
let type = !tags.some(item =>tag === item.tag) ? checkContentType(content) : Array;
// 添加结果
tags.push({tag, type, content});
// 处理剩下的数据
xmlData = xmlData.substring(content.length + tag.length * 2 + 5);
// 如果还有数据,则递归处理
if (xmlData) getXMLObjectTags(xmlData, tags);
} catch (e) {
console.error(e);
}
}
获取标签中的内容(代码实现):
function getXMLObjectContent(xmlData, tag) {
try {
// 定义正则,先抓取第一个标记
let temp = eval(`/<${tag}>.*?<\\/${tag}>/i`).exec(xmlData)[0];
// 处理并返回结果
return temp.substring(tag.length + 2, temp.length - tag.length -3);
} catch (e) {
console.error(e);
return '';
}
}
对象设置值(代码实现):
function setObject(json, tag, content) {
json[tag] = {};
handle(content, json[tag]);
}
为数组设置值(代码实现):
function setArray(json, tag, content) {
// 如果有重复节点但为对象节点,则需要进行数组转换
if (json.hasOwnProperty(tag)&&Object === json[tag].constructor) {
// 重新解构Object为Array
json[tag] = [ { ...json[tag]} ];
} else if (json.hasOwnProperty(tag)) {
// 作为元素添加进Array
json[tag] = [ json[tag]];
}
let tempObject;
// 判断该节点内是否还有对象
if (Object === checkContentType(content)) {
// 定义数组里的新对象
tempObject = {};
// 继续递归提取节点里的内容到新对象中
handle(content, tempObject);
} else {
tempObject = content;
}
// 把新对象赋值到数组中
json[tag].push(tempObject);
}
设置值(代码实现):
function setValue(json, tag, content) {
json[tag] = content;
}
判别标签类型(Object/Array or Value) (代码实现):
function checkContentType(data) {
// 尝试执行
try {
// 定义正则,先抓取第一个标记
let tag = /<.*?>/i.exec(data)[0];
tag = tag.substring(1, tag.length -1);
// 定义正则,抓取首标签和尾标签之间的值,如果抓取得到
return eval(`/<${tag}>.*?<\\/${tag}>/i`).exec(data)[0] ? Object :String;
} catch (e) {
return String;
}
}
本发明采用将标记型报文矩阵化使得标记型报文中层级关系得以显性、结构化表征,便于计算机软硬件处理;本发明遍历时每次调用一列元素进行处理,占用存储资源少,计算效率高。本发明利用标记型报文结构化后的内在规律进行类型判别,判别方法简单、可靠、高效。本发明能够实现文从XML报文到JSON结构简单、高效和稳定的转换,便于晶圆生产过程中各个***间信息的传输和存储。
在本申请所提供的几个实施例中,应该理解到,所揭露的***、装置或方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅是示意性的,例如,模块/单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或单元可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的模块/单元可以是或者也可以不是物理上分开的,作为模块/单元显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块/单元来实现本申请实施例的目的。例如,在本申请各个实施例中的各功能模块/单元可以集成在一个处理模块中,也可以是各个模块/单元单独物理存在,也可以两个或两个以上模块/单元集成在一个模块/单元中。
本领域普通技术人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
上述各个附图对应的流程或结构的描述各有侧重,某个流程或结构中没有详述的部分,可以参见其他流程或结构的相关描述。
上述实施例仅例示性说明本申请的原理及其功效,而非用于限制本申请。任何熟悉此技术的人士皆可在不违背本申请的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本申请所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本申请的权利要求所涵盖。
Claims (10)
1.一种标记型报文的结构转换方法,用于报文信息存储交换,包括:
获取第一标记型报文中的报文体,其中,所述报文体由标签体组成,标签体包括标签和标签体数据,标签包括首标签和尾标签,标签体数据位于首标签和尾标签之间,非嵌套标签体的标签体数据中不含子标签体,嵌套标签体的标签体数据中含有子标签体;
将报文体进行矩阵化得到二维的报文矩阵;其中,所述报文矩阵中采用矩阵行元素的向右缩进表示标签体层级顺序并得到对应的标签体矩阵;
从报文矩阵中第一列元素开始,按照层级顺序依次遍历报文矩阵中每一层级的所有标签体矩阵,获取标签及对应的标签体数据,判别标签体数据的类型,并得到标签、标签层级顺序、标签体数据及其类型四个要素的对应关系;
采用得到的标签、标签层级顺序、标签体数据及其类型四个要素的对应关系,按照第二标记型报文的报文结构生成第二标记型报文。
2.如权利要求1所述的标记型报文的结构转换方法,其中,
报文矩阵的两个维度中,第一维度代表报文体的标签层级,记为列轴X,第二维度代表报文体的长度,记为行轴Y;报文矩阵由标签体矩阵嵌套构成,同级标签体矩阵沿行轴Y方向排列,标签体矩阵的子标签体矩阵沿列轴X方向排列;标签体矩阵的在报文矩阵的起始位置记为(y,x),y是标签体矩阵的起始行,x是标签体矩阵的起始列,等于标签体的标签最高级别;非嵌套标签体的首标签、标签体内容和尾标签依次排成的标签体矩阵,嵌套标签体转换成m/>的标签体矩阵,首标签位置为(y,x),尾标签位置为(y+n-1,x),子标签体矩阵的起始位置为(y+1,x+1),并且是维度为/>的标签体矩阵。
3.如权利要求1或2所述的标记型报文的结构转换方法,其中,
第一标记型报文是XML报文,第二标记型报文是JSON报文。
4.如权利要求3所述的标记型报文的结构转换方法,其中,
先找到XML报文中声明结尾标记“?>”的位置,然后从XML报文中“?>”之后的位置开始到报文结束位置进行截取,从而获得的XML报文中的报文体。
5.如权利要求3所述的标记型报文的结构转换方法,其中,
利用得到的标签、标签层级顺序、标签体数据及其类型四个要素的对应关系,按照递归执行顺序,组合各个标签和标签体数据,最终生成JSON报文。
6.如权利要求3所述的标记型报文的结构转换方法,其中,
所述标签体数据类型包括对象类、数组类和值类,判别标签体数据的类型时,针对标签体矩阵第一列中的标签,如果标签重复,则对应的标签体数据为数组;如果标签完整且唯一,则对应的标签体数据为对象;如果标签仅存在首标签,则对应的标签体数据为值。
7.如权利要求1所述的标记型报文的结构转换方法,其中,
遍历报文矩阵中每一层级的所有标签体矩阵时,先读取报文矩阵的第一列,获取第一列元素中的标签和对应的第二层级标签体矩阵,用获取的标签体矩阵进行下一层级的标签体矩阵遍历,以此类推,进行其他低层级的遍历,直到报文矩阵读取结束。
8.一种标记型报文的结构转换装置,用于报文信息存储交换,包括:
报文体获取单元,用于获取第一标记型报文中的报文体;其中,所述报文体由标签体组成,标签体包括标签和标签体数据,标签包括首标签和尾标签,标签体数据位于首标签和尾标签之间,非嵌套标签体的标签体数据中不含子标签体,嵌套标签体的标签体数据中含有子标签体;
报文体矩阵化模块,用于将报文体进行矩阵化得到二维的报文矩阵;其中,所述报文矩阵中采用矩阵行元素的向右缩进表示标签体层级顺序并得到对应的标签体矩阵;
报文矩阵处理单元,用于从报文矩阵中第一列元素开始,按照层级顺序依次遍历报文矩阵中每一层级的所有标签体矩阵,获取标签及对应的标签体数据,判别标签体数据的类型,并得到标签、标签层级顺序、标签体数据及其类型四个要素的对应关系;
报文生成单元,用于采用得到的标签、标签层级顺序、标签体数据及其类型四个要素的对应关系,按照第二标记型报文的报文结构生成第二标记型报文。
9.一种电子产品,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有能被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如权利要求1至7中任一项所述的标记型报文的结构转换方法。
10.一种计算机可读存储介质,存储有计算机程序,其中,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的标记型报文的结构转换方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311146068.6A CN116882366B (zh) | 2023-09-07 | 2023-09-07 | 标记型报文的结构转换方法、装置、电子产品和介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311146068.6A CN116882366B (zh) | 2023-09-07 | 2023-09-07 | 标记型报文的结构转换方法、装置、电子产品和介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116882366A true CN116882366A (zh) | 2023-10-13 |
CN116882366B CN116882366B (zh) | 2024-01-19 |
Family
ID=88257266
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311146068.6A Active CN116882366B (zh) | 2023-09-07 | 2023-09-07 | 标记型报文的结构转换方法、装置、电子产品和介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116882366B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140207826A1 (en) * | 2013-01-21 | 2014-07-24 | International Business Machines Corporation | Generating xml schema from json data |
CN104410667A (zh) * | 2014-10-31 | 2015-03-11 | 北京思特奇信息技术股份有限公司 | 一种xml报文到json报文的转换方法及*** |
KR20150088094A (ko) * | 2014-01-23 | 2015-07-31 | 한화테크윈 주식회사 | 계층적 데이터 분석 방법 및 그 프로그램이 기록된 기록 매체 |
CN109889553A (zh) * | 2019-04-18 | 2019-06-14 | 中国电子科技集团公司第二十九研究所 | 一种结构化报文自适应转换方法及装置 |
CN111858472A (zh) * | 2020-08-03 | 2020-10-30 | 平安国际智慧城市科技股份有限公司 | 文件格式转换方法、装置、计算机设备及存储介质 |
CN115118777A (zh) * | 2022-06-25 | 2022-09-27 | 平安银行股份有限公司 | 基于业务类型的报文转换方法、装置、设备及存储介质 |
CN116346662A (zh) * | 2023-03-29 | 2023-06-27 | 中信银行股份有限公司 | 一种测试报文生成方法、装置、设备和存储介质 |
CN116644213A (zh) * | 2023-06-07 | 2023-08-25 | 深圳复临科技有限公司 | Xml文件读取方法、装置、设备及存储介质 |
-
2023
- 2023-09-07 CN CN202311146068.6A patent/CN116882366B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140207826A1 (en) * | 2013-01-21 | 2014-07-24 | International Business Machines Corporation | Generating xml schema from json data |
KR20150088094A (ko) * | 2014-01-23 | 2015-07-31 | 한화테크윈 주식회사 | 계층적 데이터 분석 방법 및 그 프로그램이 기록된 기록 매체 |
CN104410667A (zh) * | 2014-10-31 | 2015-03-11 | 北京思特奇信息技术股份有限公司 | 一种xml报文到json报文的转换方法及*** |
CN109889553A (zh) * | 2019-04-18 | 2019-06-14 | 中国电子科技集团公司第二十九研究所 | 一种结构化报文自适应转换方法及装置 |
CN111858472A (zh) * | 2020-08-03 | 2020-10-30 | 平安国际智慧城市科技股份有限公司 | 文件格式转换方法、装置、计算机设备及存储介质 |
CN115118777A (zh) * | 2022-06-25 | 2022-09-27 | 平安银行股份有限公司 | 基于业务类型的报文转换方法、装置、设备及存储介质 |
CN116346662A (zh) * | 2023-03-29 | 2023-06-27 | 中信银行股份有限公司 | 一种测试报文生成方法、装置、设备和存储介质 |
CN116644213A (zh) * | 2023-06-07 | 2023-08-25 | 深圳复临科技有限公司 | Xml文件读取方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN116882366B (zh) | 2024-01-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3866466B2 (ja) | データ構造管理装置、データ構造管理システム、データ構造管理方法およびデータ構造管理プログラムを格納する記録媒体 | |
CN111124551B (zh) | 数据序列化、数据反序列化方法、装置和计算机设备 | |
CN112182036A (zh) | 数据的发送与写入方法、装置、电子设备及可读存储介质 | |
CN112148343B (zh) | 规则发布方法、装置及终端设备 | |
CN114491172B (zh) | 树形结构节点的快速检索方法、装置、设备及存储介质 | |
CN109460220A (zh) | 报文预定义代码生成方法、装置、电子设备和存储介质 | |
CN109697278B (zh) | 将根据模式以人类可读的文本格式化的数据编码为二进制 | |
CN104778258A (zh) | 一种面向协议数据流的数据抽取方法 | |
CN114490853A (zh) | 数据处理方法、装置、设备、存储介质及程序产品 | |
US8145667B2 (en) | Schemaless XML payload generation | |
CN114331416A (zh) | 数据处理的方法、装置、电子设备及存储介质 | |
CN108845964B (zh) | 一种基于um-bus总线的cps主节点动态识别方法 | |
CN111354099A (zh) | 一种数据处理方法、数据处理装置及诊断设备 | |
CN114372097B (zh) | 一种数据集列序列化的高效连接比对实现方法及装置 | |
CN108829624B (zh) | 一种cps节点属性数据与功能方法代码的存储组织方法 | |
CN116882366B (zh) | 标记型报文的结构转换方法、装置、电子产品和介质 | |
CN110795915B (zh) | xml文件批量修改方法、***、设备和计算机可读存储介质 | |
CN108845965B (zh) | 一种基于um-bus总线的cps从节点动态识别方法 | |
CN116049180A (zh) | 面向Paas平台的租户数据处理方法及装置 | |
CN116186045A (zh) | 稀疏矩阵的调整方法、装置、电子设备及存储介质 | |
US8301726B2 (en) | Method and system for bit streaming for data centric applications | |
CN114764330A (zh) | 数据血缘解析方法、装置、电子设备和计算机可读存储介质 | |
CN114070901A (zh) | 基于多数据对齐的数据发送和接收方法、装置和设备 | |
US20080071735A1 (en) | Method, apparatus, and computer progam product for data transformation | |
KR20050031954A (ko) | 데이터 객체 전송시스템 및 수신방법 |
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 |