一种xml报文到json报文的转换方法及系统的制作方法

文档序号:7818490阅读:469来源:国知局
一种xml报文到json报文的转换方法及系统的制作方法
【专利摘要】本发明涉及一种XML报文到JSON报文的转换方法及系统,包括以下步骤:步骤1:获取待转换的XML报文,将XML报文解析成XML对象;步骤2:逐个获取XML对象中每个节点的属性;步骤3:检查当前节点中是否只包含文本内容或空元素,如果是,执行步骤4,否则,执行步骤5;步骤4:将当前节点的属性进行修改,修改完毕,执行步骤6;步骤5:获取下一个节点的属性,执行步骤3;步骤6:将XML对象转换成JSON对象,并将JSON对象转换成JSON报文。本发明通过开发框架的修改,自动将XML格式和JSON格式进行转换处理,这样对应用开发人员是透明的,复用了以前的程序代码,降低了项目的风险。
【专利说明】一种XML报文到JSON报文的转换方法及系统

【技术领域】
[0001] 本发明涉及一种报文转换方法,特别涉及一种XML报文到JSON报文的转换方法及 系统。

【背景技术】
[0002] 公司在新的项目中准备采用新的技术架构,此技术架构的要求是前台web应用调 用后台服务都必须通过ESB进行服务的调用,这样就要求ESB这层要很高的性能,否则,会 由于ESB这层性能影响所有调用系统的性能,最后导致项目面临高风险,因此,需要想办法 提高ESB的性能。
[0003] 目前通过ESB进行服务调用的方式是通过web service的方式进行调用,调用 的数据格式是XML格式。通过网上查询了解到目前互联网流行的架构风格方式是采用 RESTful的方式,同时数据格式是JSON格式。通过技术原型的压力测试结果,证明确实采用 RESTful+JSON的方式比web service+XML的方式性能要好。
[0004] 因此,最后通过ESB调用服务的方式采用RESTful+JSON的方式,RESTful目前有 许多开源框架支持,不在此进行介绍。


【发明内容】

[0005] 本发明所要解决的技术问题是提供一种根据预定的格式将XML报文到JSON报文 的转换方法及系统。
[0006] 本发明解决上述技术问题的技术方案如下:一种XML报文到JSON报文的转换方 法,包括以下步骤:
[0007] 步骤1 :获取待转换的XML报文,将XML报文解析成XML对象;
[0008] 步骤2 :逐个获取XML对象中每个节点的属性;
[0009] 步骤3:检查当前节点中是否只包含文本内容或空元素,如果是,执行步骤4,否 贝IJ,执行步骤5;
[0010] 步骤4 :将当前节点的属性进行修改,修改完毕,执行步骤6 ;
[0011] 步骤5 :获取下一个节点的属性,执行步骤3 ;
[0012] 步骤6 :将XML对象转换成JSON对象,并将JSON对象转换成JSON报文。
[0013] 本发明的有益效果是:本发明通过开发框架的修改,自动将XML格式和JSON格 式进行转换处理,这样对应用开发人员是透明的,复用了以前的程序代码,降低了项目的风 险。
[0014] 在上述技术方案的基础上,本发明还可以做如下改进。
[0015] 进一步,所述步骤4具体包括以下步骤:判断当前节点的属性,如果节点的属性是 字符串类型,将该节点的属性定义为不被解析器解析的文本数据类型,如果节点的属性是 double类型且该节点的值是空元素、或者节点属性位除字符串类型和double之外的任意 类型且节点的值是空元素时,将该节点的属性定义为数字类型。
[0016] 进一步,所述步骤2中具体为利用Document循环逐个获取XML对象中每个节点的 属性。
[0017] 进一步,节点的属性包括int、long、string和double。
[0018] 进一步,一种XML报文到JSON报文的转换系统,包括获取解析模块、第一获取属性 模块、检查模块、修改模块、第二获取属性模块和转换模块;
[0019] 所述获取解析模块,获取待转换的XML报文,将XML报文解析成XML对象;
[0020] 所述第一获取属性模块,用于逐个获取XML对象中每个节点的属性;
[0021] 所述检查模块,用于检查当前节点中是否只包含文本内容或空元素,如果是,执行 修改模块,否则,执行第二获取属性模块;
[0022] 所述修改模块,用于将当前节点的属性进行修改,修改完毕,执行转换模块;
[0023] 所述第二获取属性模块,用于获取下一个节点的属性,执行检查模块;
[0024] 所述转换模块,用于将XML对象转换成JSON对象,并将JSON对象转换成JSON报 文。
[0025] 进一步,所述修改模块具体用于判断当前节点的属性,如果节点的属性是字符串 类型,将该节点的属性定义为不被解析器解析的文本数据类型,如果节点的属性是double 类型且该节点的值是空元素、或者节点属性位除字符串类型和double之外的任意类型且 节点的值是空元素时,将该节点的属性定义为数字类型。
[0026] 进一步,所述第一获取属性模块中具体为利用Document循环逐个获取XML对象中 每个节点的属性。
[0027] 进一步,节点的属性包括int、long、string和double。

【专利附图】

【附图说明】
[0028] 图1为本发明方法步骤流程图;
[0029] 图2为本发明系统结构图。
[0030] 附图中,各标号所代表的部件列表如下:
[0031] 1、获取解析模块,2、第一获取属性模块,3、检查模块,4、修改模块,5、第二获取属 性模块,6、转换模块。

【具体实施方式】
[0032] 以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并 非用于限定本发明的范围。
[0033] 如图1所示,为本发明方法步骤流程图;图2为本发明系统结构图。
[0034] 实施例1
[0035] -种XML报文到JSON报文的转换方法,包括以下步骤:
[0036] 步骤1 :获取待转换的XML报文,将XML报文解析成XML对象;
[0037] 步骤2 :逐个获取XML对象中每个节点的属性;
[0038] 步骤3:检查当前节点中是否只包含文本内容或空元素,如果是,执行步骤4,否 贝IJ,执行步骤5;
[0039] 步骤4 :将当前节点的属性进行修改,修改完毕,执行步骤6 ;
[0040] 步骤5 :获取下一个节点的属性,执行步骤3 ;
[0041] 步骤6 :将XML对象转换成JSON对象,并将JSON对象转换成JSON报文。
[0042] 所述步骤4具体包括以下步骤:判断当前节点的属性,如果节点的属性是字符串 类型,将该节点的属性定义为不被解析器解析的文本数据类型,如果节点的属性是double 类型且该节点的值是空元素、或者节点属性位除字符串类型和double之外的任意类型且 节点的值是空元素时,将该节点的属性定义为数字类型。
[0043] 所述步骤2中具体为利用Document循环逐个获取XML对象中每个节点的属性。
[0044] 节点的属性包括 int、long、string 和 double。
[0045] -种XML报文到JSON报文的转换系统,包括获取解析模块1、第一获取属性模块 2、检查模块3、修改模块4、第二获取属性模块5和转换模块6 ;
[0046] 所述获取解析模块1,获取待转换的XML报文,将XML报文解析成XML对象;
[0047] 所述第一获取属性模块2,用于逐个获取XML对象中每个节点的属性;
[0048] 所述检查模块3,用于检查当前节点中是否只包含文本内容或空元素,如果是,执 行修改模块4,否则,执行第二获取属性模块5 ;
[0049] 所述修改模块4,用于将当前节点的属性进行修改,修改完毕,执行转换模块6 ;
[0050] 所述第二获取属性模块5,用于获取下一个节点的属性,执行检查模块3 ;
[0051 ] 所述转换模块6,用于将XML对象转换成JSON对象,并将JSON对象转换成JSON报 文。
[0052] 转换模块6所述修改模块4具体用于判断当前节点的属性,如果节点的属性是 字符串类型,将该节点的属性定义为不被解析器解析的文本数据类型,如果节点的属性是 double类型且该节点的值是空元素、或者节点属性位除字符串类型和double之外的任意 类型且节点的值是空元素时,将该节点的属性定义为数字类型。
[0053] 所述第一获取属性模块2中具体为利用Document循环逐个获取XML对象中每个 节点的属性。
[0054] 节点的属性包括 int、long、string 和 double。
[0055] 本发明还提供一种JSON报文到XML报文的转换方法,包括以下步骤:
[0056] 步骤a :将JSON字符串转换生成JSON对象;
[0057] 步骤b :根据JSON对象生成空的XML对象;
[0058] 步骤c :根据空的XML对象,将JSON对象中的参数存储于空的XML对象中,得到字 符串XML。
[0059] 在采用基于RESTful+JSON的架构风格下,由于以前编写的大量程序都是基于web service+XML的方式。为了尽量避免技术架构变化导致应用程序的大量修改,需要将前台调 用服务传入的XML的格式转换成JSON格式,将返回JSON格式再转换回XML格式,因此,这 就涉及到XML格式和JSON格式之间的相互转换。最终的目的就是对应用程序透明,减少项 目风险。
[0060] XML格式与JSON格式之间转换的分析和实现过程:
[0061] 1.分析公司的XML格式和标准JSON格式
[0062] 约定的XML格式中节点属性有4种类型,分别是int、long、string、double,具体 案例如下:
[0063] <BATCH_TYPE type = 〃int">l〈/BATCH_TYPE>
[0064] <TEMPLATE_ID type = "long">l〈/TEMPLATE_ID>
[0065] 〈AUT0_C0NFIRM type = "string">N〈/AUT0_C0NFIRM>
[0066] <SALE_PRICE type = "double">100〈/SALE_PRICE>
[0067] 标准的JSON格式中字符串必须用双引号引起来,其余的都不用,比如字符串〃a〃。
[0068] 基于以上前提,将XML格式中type = "string 〃的数据需要添加双引号转换成 JSON的格式,也即需要单独解析XML文件,对于节点属性是type = "string〃的数据添加 双引号转换成JSON的格式。其他类型的数据可以直接使用XML中的原始数据值。反之,从 JSON格式转换回XML格式也有上述的要求。
[0069] 2.将XML格式转换成JSON格式
[0070] 首先,分析默认XML格式转换成JSON格式是一种什么情况,具体数据格式片段举 例如下:
[0071] XML 格式数据:<P00L_ID type = "string">ll〈/P00L_ID>
[0072] 转换后的JSON数据:
[0073]

【权利要求】
1. 一种XML报文到JSON报文的转换方法,其特征在于,包括以下步骤: 步骤1 :获取待转换的XML报文,将XML报文解析成XML对象; 步骤2 :逐个获取XML对象中每个节点的属性; 步骤3:检查当前节点中是否只包含文本内容或空元素,如果是,执行步骤4,否则,执 行步骤5 ; 步骤4 :将当前节点的属性进行修改,修改完毕,执行步骤6 ; 步骤5 :获取下一个节点的属性,执行步骤3 ; 步骤6 :将XML对象转换成JS0N对象,并将JS0N对象转换成JS0N报文。
2. 根据权利要求1所述的XML报文到JS0N报文的转换方法,其特征在于,所述步骤4 具体包括以下步骤:判断当前节点的属性,如果节点的属性是字符串类型,将该节点的属性 定义为不被解析器解析的文本数据类型,如果节点的属性是double类型且该节点的值是 空元素、或者节点属性位除字符串类型和double之外的任意类型且节点的值是空元素时, 将该节点的属性定义为数字类型。
3. 根据权利要求1所述的XML报文到JS0N报文的转换方法,其特征在于:所述步骤2 中具体为利用Document循环逐个获取XML对象中每个节点的属性。
4. 根据权利要求1所述的XML报文到JS0N报文的转换方法,其特征在于:节点的属性 包括 int、long、string 和 double。
5. -种XML报文到JSON报文的转换系统,其特征在于:包括获取解析模块(1)、第一获 取属性模块(2)、检查模块(3)、修改模块(4)、第二获取属性模块(5)和转换模块(6); 所述获取解析模块(1),获取待转换的XML报文,将XML报文解析成XML对象; 所述第一获取属性模块(2),用于逐个获取XML对象中每个节点的属性; 所述检查模块(3),用于检查当前节点中是否只包含文本内容或空元素,如果是,执行 修改模块(4),否则,执行第二获取属性模块(5); 所述修改模块(4),用于将当前节点的属性进行修改,修改完毕,执行步骤6 ; 所述第二获取属性模块(5),用于获取下一个节点的属性,执行检查模块(3); 所述转换模块¢),用于将XML对象转换成JSON对象,并将JSON对象转换成JSON报 文。
6. 根据权利要求5所述的XML报文到JSON报文的转换系统,其特征在于,所述修改模 块(4)具体用于判断当前节点的属性,如果节点的属性是字符串类型,将该节点的属性定 义为不被解析器解析的文本数据类型,如果节点的属性是double类型且该节点的值是空 元素、或者节点属性位除字符串类型和double之外的任意类型且节点的值是空元素时,将 该节点的属性定义为数字类型。
7. 根据权利要求5所述的XML报文到JSON报文的转换系统,其特征在于:所述第一获 取属性模块(2)中具体为利用Document循环逐个获取XML对象中每个节点的属性。
8. 根据权利要求5所述的XML报文到JSON报文的转换系统,其特征在于:节点的属性 包括 int、long、string 和 double。
【文档编号】H04L29/08GK104410667SQ201410602656
【公开日】2015年3月11日 申请日期:2014年10月31日 优先权日:2014年10月31日
【发明者】袁亮 申请人:北京思特奇信息技术股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1