一种基于流机制解析XML支持平台多格式报文的方法及系统与流程

文档序号:35551199发布日期:2023-09-23 23:02阅读:38来源:国知局
一种基于流机制解析XML支持平台多格式报文的方法及系统与流程

本发明涉及远程接口调用,更具体地,涉及一种基于流机制解析xml支持平台多格式报文的方法及系统。


背景技术:

1、银行支付系统分为网关模块,路由模块、通道业务处理模块、批处理模块。各服务之间采用dubbo rpc协议通信。

2、商户调用支付系统提供的服务时,按照支付系统提供的标准接口文档进行接入。请求经由银行的企业服务总线(esb)治理,再经由f5做负载均衡,到达支付系统网关层。网关层将接收到的请求报文,进行解析、校验、分发到路由层。路由层按照预设的路由规则,分发到匹配的通道服务。

3、解析xml文本时,通常有两种方式:

4、一种是树形解析器,将读入的xml文档转换成树结构对象document。这是基于内存读取,无论文件有多大,都会将所有的内容预先装载到内存中。特点是可以读取xml文件内容,也可以向xml文件中插入数据和修改数据。

5、另一种是流机制解析器,在读入xml文档时生成相应的事件。这是基于事件的,当某个事件被触发时,才获取相应的xml的部分数据,占用内存较小。按顺序一边读取数据,一边进行解析,在读取数据的时候会触发事件,每触发一次,就执行一次触发方法。特点是只能对xml文件内容进行读取,而不能在文件中插入或修改数据。

6、如果采取dom树解析,读写便捷,但是占用内存较大,应用性能降低。如果采用流机制解析,写入不便,但是内存占用小,应用性能提升。


技术实现思路

1、本发明针对现有技术中存在的技术问题,提供一种基于流机制解析xml支持平台多格式报文的方法及系统,本发明解决的问题是统一支付平台接收的请求报文原本是在body节点下固定放入两个节点,一个是plain节点,送业务数据,多个业务数据字段以“;”分隔,另一个是signature节点,送业务数据的md5加密串。现在有需求要变更plain节点值,修改为一个业务数据单独使用一个节点的形式。

2、根据本发明的第一方面,提供了一种基于流机制解析xml支持平台多格式报文的方法,所述方法包括以下步骤:

3、步骤1,将要传入的标准esb报文的节点、属性信息填写配置成xml模板文件,存放于项目特定目录;

4、步骤2,在模板文件中,将body节点设置成include标签子节点,设置key值;应用层将要写入body节点的内容,按标签名-标签值的形式,放入map中,map中要指定存放key-value,将map作为参数传入框架对外暴露的调用方法;

5、步骤3,框架层使用流机制读取模板文件,并将模板配置的需要生成的节点和属性依次写入out输出流;

6、步骤4,框架层在写入输出流时,如果读到include节点,且key值与应用层传入的key相同,则将应用层传入的键值对,键名为标签名,键值为标签值,依次生成独立的与include节点同级的节点;

7、步骤5,将out输出流的内容返回至应用层,完成请求报文的组装。

8、在上述技术方案的基础上,本发明还可以作出如下改进。

9、可选的,所述应用层是项目中针对不同的场景会做不同的业务处理,面向业务逻辑编写代码和处理数据;无论是需要传入以符号“;”分隔还是以多节点形式的报文,在本框架下均能动态支持多格式报文的效果。

10、可选的,所述框架层即是项目中将公用方法抽象出来,封装成一个盒子,作为对外暴露一个窗口,在编写逻辑代码时,将要填充的数据送进窗口,盒子会将数据按照逻辑加工成完整的esb请求报文;所述框架层使用流机制读取模板文件,并将模板配置的需要生成的节点和属性依次写入out输出流包括:

11、在遇到<group name=”app-header”>的节点时,向输出流中写入<sys-header>,其他节点依此类逐步生成并依次写入out输出流。

12、可选的,所述依次生成独立的与include节点同级的节点包括:假如应用层传入的键值对为k1-v1,则会生成结构如下:

13、<body>

14、<data name="k1">

15、<field type="string"length="2">v1</field>

16、</data>

17、</body>。

18、可选的,所述将out输出流的内容返回至应用层,完成请求报文的组装具体包括:

19、经过基于流机制读取xml模板文件,遇到标签的开始和关闭事件时,对内容进行增加和修改,最终将out输出流的内容返回至应用层,完成了请求报文的组装。

20、根据本发明的第二方面,提供一种基于流机制解析xml支持平台多格式报文的系统,包括:

21、请求发起模块,用于将要传入的标准esb报文的节点、属性信息填写配置成一个xml模板文件,存放于项目特定目录;在模板文件中,将body节点设置一个include标签子节点,设置key值;应用层将要写入body节点的内容,按标签名-标签值的形式,放入map中,map中要指定存放一个key-value,将map作为参数传入框架对外暴露的调用方法;

22、框架模块,用于将框架层使用流机制读取模板文件,并将模板配置的需要生成的节点和属性依次写入out输出流;框架层在写入输出流时,如果读到include节点,且key值与应用层传入的key相同,则将应用层传入的键值对,键名为标签名,键值为标签值,依次生成独立的与include节点同级的节点;

23、应用模块,用于将out输出流的内容返回至应用层,则完成了请求报文的组装。

24、可选的,所述将模板配置的需要生成的节点和属性依次写入out输出流包括:

25、在遇到<group name=”app-header”>的节点时,向输出流中写入<sys-header>,其他节点依此类逐步生成并依次写入out输出流。

26、可选的,所述将out输出流的内容返回至应用层,完成请求报文的组装具体包括:

27、经过基于流机制读取xml模板文件,遇到标签的开始和关闭事件时,对内容进行增加和修改,最终将out输出流的内容返回至应用层,完成了请求报文的组装。

28、本发明的技术效果和优点:

29、本发明提供了一种基于流机制解析xml支持平台多格式报文的方法及系统,其基于流机制解析器,高效解析xml文本,在框架层按照预设的xml结构模板,于指定节点处动态添加子节点,且动态解析接收的请求xml内容,将字段名与字段值放进系统内存中,供灵活取用。

30、本发明基于流机制解析xml文本,实现了统一支付平台高效动态支持多格式报文效果。

31、本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所指出的结构来实现和获得。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1