CN104753891A - 一种xml报文解析方法及装置 - Google Patents

一种xml报文解析方法及装置 Download PDF

Info

Publication number
CN104753891A
CN104753891A CN201310752479.XA CN201310752479A CN104753891A CN 104753891 A CN104753891 A CN 104753891A CN 201310752479 A CN201310752479 A CN 201310752479A CN 104753891 A CN104753891 A CN 104753891A
Authority
CN
China
Prior art keywords
xml message
character
specified node
resolved
specified
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
Application number
CN201310752479.XA
Other languages
English (en)
Other versions
CN104753891B (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.)
China Mobile Group Henan Co Ltd
China Mobile Group Hunan Co Ltd
Original Assignee
China Mobile Group Hunan 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 China Mobile Group Hunan Co Ltd filed Critical China Mobile Group Hunan Co Ltd
Priority to CN201310752479.XA priority Critical patent/CN104753891B/zh
Publication of CN104753891A publication Critical patent/CN104753891A/zh
Application granted granted Critical
Publication of CN104753891B publication Critical patent/CN104753891B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Transfer Between Computers (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明实施例提供了一种XML报文的解析方法及装置,该方法包括:确定待解析的XML报文中首个指定节点的结束字符的位置,并以确定出的位置为分界线,将XML报文划分为第一XML报文和第二XML报文;确定第一XML报文中指定节点的起始字符的位置,并从第一XML报文中截取起始字符至结束字符的位置之间的字符串;对截取的字符串进行解析,得到指定节点所包含的各元素的相关信息,将下一个指定节点作为首个指定节点,将第二XML报文作为XML报文后,返回确定结束字符的位置的步骤,直到解析完所有的指定节点。本发明只需从包含用户所需要的元素所在节点对应的一部分字符串中解析即可,节省了较多的解析时间。

Description

一种XML报文解析方法及装置
技术领域
本发明涉及通信技术领域,尤其涉及一种XML报文解析方法及装置。
背景技术
目前,可扩展标记语言(Extensible Markup Language,XML)报文解析在WEB应用中的使用越来越广泛,尤其是应用于Web服务(Web service)中,例如,在解析Web服务中的XML报文时,通常采用jdom方法和dom4J方法实现解析。
具体来说,在采用jdom方法解析XML报文时,解析器SAX执行的具体解析流程为:将XML报文中的全部字符串转换为文档对象(document),即DOM树形结构;然后对转换后的文档对象进行顺序扫描及遍历操作,最终得到用户所需元素的相关信息,例如元素或元素属性值。在SAX解析文档对象过程中,遇到文档对象的开始与结束,元素的开始与结束的地方都会触发一系列的事件处理函数,由这些函数来完成相应的操作。
假设采用jdom方法已经得到了用户所需的XML字符串,那么,具体实现代码可如下:
在采用dom4J方法解析XML报文时,具体解析流程与jdom方法类似,与之不同的是,在dom4J方法中,大量使用了应用程序编程接口(ApplicationProgramming Interface,API)中的Collections类,并且还提供了一些替代方法以获取更好的解析性能或更直接的编码方式,可在很多开源项目中使用,例如Hibernate。
假设采用dom4j方法已经得到了用户所需的XML字符串,那么,具体实现代码可如下:
从上述两种解析流程中可以看出,不管采用哪种解析流程,均需要将XML报文中所有字符串转换为文档对象,而在实际应用中,可能并不会用到XML报文中所有的数据,这就使***消耗过多的时间来解析这些不会被用到的数据,导致解析XML报文的时间较长。
发明内容
本发明实施例提供了一种XML报文的解析方法及装置,用以解决采用现有的XML报文的解析方式解析XML报文的时间较长的问题。
基于上述问题,本发明实施例提供的一种XML报文的解析方法,包括:
确定待解析的XML报文中首个指定节点的结束字符的位置,并以确定出的位置为分界线,将所述XML报文划分为第一XML报文和第二XML报文;
确定所述第一XML报文中所述指定节点的起始字符的位置,并从所述第一XML报文中截取所述起始字符至所述结束字符的位置之间的字符串;
对截取的字符串进行解析,得到所述指定节点所包含的各元素的相关信息,将下一个指定节点作为首个指定节点,将所述第二XML报文作为所述XML报文后,返回确定所述结束字符的位置的步骤,直到解析完所有的指定节点。
本发明实施例提供的一种XML报文的解析装置,包括:
确定模块,用于确定待解析的XML报文中首个指定节点的结束字符的位置;以及确定所述划分模块划分的第一XML报文中所述指定节点的起始字符的位置;
划分模块,用于以所述确定模块确定出的位置为分界线,将所述XML报文划分为第一XML报文和第二XML报文;
截取模块,用于从所述第一XML报文中截取所述起始字符至所述结束字符的位置之间的字符串;
解析模块,用于对所述截取模块截取的字符串进行解析,得到所述指定节点所包含的各元素的相关信息,将下一个指定节点作为首个指定节点,将所述第二XML报文作为所述XML报文后,返回所述确定模块确定所述结束字符的位置的步骤,直到解析完所有的指定节点。
本发明实施例的有益效果包括:
本发明实施例提供的一种XML报文的解析方法,在该方法中,确定待解析的XML报文中首个指定节点的结束字符的位置,并以确定出的位置为分界线,将所述XML报文划分为第一XML报文和第二XML报文;确定所述第一XML报文中所述指定节点的起始字符的位置,并从所述第一XML报文中截取所述起始字符至所述结束字符的位置之间的字符串;对截取的字符串进行解析,得到所述指定节点所包含的各元素的相关信息,将下一个指定节点作为首个指定节点,将所述第二XML报文作为所述XML报文后,返回确定所述结束字符的位置的步骤,直到解析完所有的指定节点。在本发明实施例中,在解析XML报文中用户需要的元素的相关信息时,无需将XML报文中的全部字符串转换为复杂的文档对象,只需按照上述流程,从包含用户所需要的元素所在节点对应的一部分字符串中解析即可,无需每次都循环遍历整个报文,节省了较多的解析时间,即前述这种解析方式使用的时间较短。
附图说明
图1为本发明实施例提供的XML报文的解析方法的流程图;
图2为本发明实施例提供的XML报文的解析装置的结构示意图。
具体实施方式
下面结合说明书附图,对本发明实施例提供的XML报文的解析方法及装置的具体实施方式进行说明。
本发明实施例提供的一种XML报文的解析方法,如图1所示,具体包括以下步骤:
S11:确定待解析的XML报文中首个指定节点的结束字符的位置,并以确定出的位置为分界线,将XML报文划分为第一XML报文和第二XML报文;
S12:确定第一XML报文中指定节点的起始字符的位置,并从第一XML报文中截取起始字符至结束字符的位置之间的字符串;
S13:对截取的字符串进行解析,得到指定节点所包含的各元素的相关信息,将下一个指定节点作为首个指定节点,将第二XML报文作为XML报文后,返回上述步骤S11,直到解析完所有的指定节点。
在本发明实施例中,对于待解析XML报文来说,需要解析此报文中的哪些节点,是预先设置的,也就是说,待解析的节点是已知的。
优选地,在上述步骤S11中,具体可利用位置寻找函数,找到待解析的XML报文中首个指定节点的结束字符的位置,具体查找过程为现有技术,在此不再详述。
优选地,在上述步骤S12中,仍可利用位置寻找函数,找到第一XML报文中指定节点的起始字符的位置。
优选地,在上述步骤S13中,可采用现有的解析流程对截取的字符串进行解析,具体解析过程不再详述。当然,在采用现有的解析流程进行解析时,也可根据实际报文的格式对现有流程进行优化。
进一步地,在本发明实施例中,在解析出所有指定节点所包含的各元素的相关信息后,可以将这些信息保存到哈希表(HASHMAP)中,以使调用方调用所需要的元素的相关信息。在这里,元素的相关信息通常包括元素名称和/或元素属性的值等。
在本发明实施例中,在解析XML报文中用户需要的元素的相关信息时,无需将XML报文中的全部字符串转换为复杂的文档对象,只需按照上述流程,从包含用户所需要的元素所在节点对应的一部分字符串中解析即可,无需每次都循环遍历整个报文,节省了较多的解析时间。
下面结合下述具体实施例对上述XML报文的解析方法进行详细说明。
假设下述XML报文是一个普通的套餐及固定费详单的应答报文,其中<R></R>为根节点,<H></H><B></B>为根节点下的两个叶节点。
而<S></S>及<M></M>为叶节点B下的两个子节点,S节点由多个元素组成;M节点由2个子节点<L></L>组成;这样一个多层嵌套结构即构成了一个完整的XML报文,此报文是一个XML形式的字符串。
具体的XML报文如下:
<?xml version="1.0"encoding="UTF-8"?>
<R>
<H>
<F n="RESULT_CODE">0</F>
<F n="RESULT_INFO">调用成功</F>
<F n="ERROR_RETURN_CODE"></F>
<F n="BUSI_RETURN_CODE">0</F>
<F n="ERROR_TYPE"></F>
</H>
<B>
<S>
<F n="F1">3</F>
<F n="ACYC_START_TIME">2013-09-0100:00:00</F>
<F n="CYCLE_BEGINDATE">2013-09-0100:00:00</F>
<F n="F2">125.33</F>
<F n="ACYC_END_TIME">2013-09-2223:59:59</F>
<F n="CYCLE_ENDDATE">2013-09-3023:59:59</F>
<F n="NUM">1</F>
</S>
<M>
<L>
<F n="TRANSDATA2">2013-09-01-2013-09-30</F>
<F n="TRANSDATA3">流量包月套餐10元档</F>
<F n="TRANSDATA4">10.00</F>
<F n="CYCLE_BEGIN_DAY">20130901</F>
<F n="TRANSDATA1">201309</F>
<F n="CYCLE_END_DAY">20130930</F>
</L>
<L>
<F n="TRANSDATA2">2013-09-01-2013-09-30</F>
<F n="TRANSDATA3">时尚计划10元音乐套包</F>
<F n="TRANSDATA4">7.33</F>
<F n="CYCLE_BEGIN_DAY">20130901</F>
<F n="TRANSDATA1">201309</F>
<F n="CYCLE_END_DAY">20130930</F>
</L>
</M>
</B>
</R>。
假设需要解析此XML报文中<H></H>、<S></S>、第一个<L></L>这三个指定节点所包含的元素的相关信息(例如元素名称和/或元素属性的值等),那么,在上述步骤S11中,首先利用位置寻找函数找到第一个指定节点的结束字符</H>的位置,以此位置为分界线,将XML报文从</H>这个位置划分成第一XML报文和第二XML报文,第一XML报文如下述代码所示,第二XML报文是从<B>开始到</R>的那一部分字符串。
具体的第一XML报文如下:
<?xml version="1.0"encoding="UTF-8"?>
<R>
<H>
<F n="RESULT_CODE">0</F>
<F n="RESULT_INFO">调用成功</F>
<F n="ERROR_RETURN_CODE"></F>
<F n="BUSI_RETURN_CODE">0</F>
<F n="ERROR_TYPE"></F>
</H>。
进一步地,在第一XML报文中,利用位置寻找函数找到首个指定节点的起始字符<H>的位置,并从第一XML报文中截取出<H>到</H>之间的字符串;然后,针对这部分字符串,可通过运用splitMulti、splitSingle、splitLeft、splitRight这些函数,将首个指定节点<H></H>所包含的RESULT_CODE等元素的相关信息解析出来,并将其保存到HASHMAP中,以便调用方可从HASHMAP中获取所需要的元素的相关信息,例如RESULT_CODE这个元素的名称为KEY,元素属性的值0为VALUE。
接下来,将<B>到</R>这一部分报文作为上述XML报文,采用与解析首个指定节点所包含的元素的相关信息的流程相同的流程,进一步解析得到<S></S>这个指定节点所包含的元素的相关信息,同样,将解析出的相关信息保存到HASHMAP中;
最后,将<M>到</R>这一部分报文再次作为上述XML报文,采用与解析首个指定节点所包含的元素的相关信息的流程相同的流程,进一步解析得到第一个<L></L>节点所包含的元素的相关信息,同样,也将解析出的相关信息保存到HASHMAP中,这样一来,这三个指定节点的相关信息均解析完毕。;
基于同一发明构思,本发明实施例还提供了一种XML报文的解析装置,由于该装置所解决问题的原理与前述XML报文的解析方法相似,因此该装置的实施可以参见前述方法的实施,重复之处不再赘述。
本发明实施例提供的一种XML报文的解析装置,如图2所示,包括:
确定模块21,用于确定待解析的XML报文中首个指定节点的结束字符的位置;以及确定划分模块22划分的第一XML报文中指定节点的起始字符的位置;
划分模块22,用于以确定模块21确定出的位置为分界线,将XML报文划分为第一XML报文和第二XML报文;
截取模块23,用于从第一XML报文中截取起始字符至结束字符的位置之间的字符串;
解析模块24,用于对截取模块23截取的字符串进行解析,得到指定节点所包含的各元素的相关信息,将下一个指定节点作为首个指定节点,将第二XML报文作为XML报文后,返回确定模块21确定结束字符的位置的步骤,直到解析完所有的指定节点。
优选地,上述确定模块21,具体用于利用位置寻找函数,确定出待解析的XML报文中首个指定节点的结束字符的位置;以及利用位置寻找函数,确定出第一XML报文中指定节点的起始字符的位置。
优选地,上述装置,还包括:
保存模块25,用于分别将解析模块24得到的所有指定节点所包含的各元素的相关信息保存到HASHMAP中,以使调用方调用所需要的元素的相关信息。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (6)

1.一种可扩展标记语言XML报文的解析方法,其特征在于,包括:
确定待解析的XML报文中首个指定节点的结束字符的位置,并以确定出的位置为分界线,将所述XML报文划分为第一XML报文和第二XML报文;
确定所述第一XML报文中所述指定节点的起始字符的位置,并从所述第一XML报文中截取所述起始字符至所述结束字符的位置之间的字符串;
对截取的字符串进行解析,得到所述指定节点所包含的各元素的相关信息,并将下一个指定节点作为首个指定节点,将所述第二XML报文作为所述XML报文后,返回确定所述结束字符的位置的步骤,直到解析完所有的指定节点。
2.如权利要求1所述的方法,其特征在于,通过下述方式确定出待解析的XML报文中首个指定节点的结束字符的位置:
利用位置寻找函数,确定出所述待解析的XML报文中首个指定节点的结束字符的位置;
通过下述方式确定出所述第一XML报文中所述指定节点的起始字符的位置:
利用所述位置寻找函数,确定出所述第一XML报文中所述指定节点的起始字符的位置。
3.如权利要求1或2所述的方法,其特征在于,还包括:
分别将得到的所有指定节点所包含的各元素的相关信息保存到哈希表HASHMAP中,以使调用方调用所需要的元素的相关信息。
4.一种可扩展标记语言XML报文的解析装置,其特征在于,包括:
确定模块,用于确定待解析的XML报文中首个指定节点的结束字符的位置;以及确定所述划分模块划分的第一XML报文中所述指定节点的起始字符的位置;
划分模块,用于以所述确定模块确定出的位置为分界线,将所述XML报文划分为第一XML报文和第二XML报文;
截取模块,用于从所述第一XML报文中截取所述起始字符至所述结束字符的位置之间的字符串;
解析模块,用于对所述截取模块截取的字符串进行解析,得到所述指定节点所包含的各元素的相关信息,将下一个指定节点作为首个指定节点,将所述第二XML报文作为所述XML报文后,返回所述确定模块确定所述结束字符的位置的步骤,直到解析完所有的指定节点。
5.如权利要求4所述的装置,其特征在于,所述确定模块,具体用于利用位置寻找函数,确定出所述待解析的XML报文中首个指定节点的结束字符的位置;以及利用所述位置寻找函数,确定出所述第一XML报文中所述指定节点的起始字符的位置。
6.如权利要求4或5所述的装置,其特征在于,还包括:
保存模块,用于分别将所述解析模块得到的所有指定节点所包含的各元素的相关信息保存到哈希表HASHMA中,以使调用方调用所需要的元素的相关信息。
CN201310752479.XA 2013-12-31 2013-12-31 一种xml报文解析方法及装置 Active CN104753891B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310752479.XA CN104753891B (zh) 2013-12-31 2013-12-31 一种xml报文解析方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310752479.XA CN104753891B (zh) 2013-12-31 2013-12-31 一种xml报文解析方法及装置

Publications (2)

Publication Number Publication Date
CN104753891A true CN104753891A (zh) 2015-07-01
CN104753891B CN104753891B (zh) 2019-04-05

Family

ID=53593006

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310752479.XA Active CN104753891B (zh) 2013-12-31 2013-12-31 一种xml报文解析方法及装置

Country Status (1)

Country Link
CN (1) CN104753891B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106169988A (zh) * 2016-02-26 2016-11-30 北京元心科技有限公司 巡检***中传输数据的方法
CN108076010A (zh) * 2016-11-10 2018-05-25 ***通信集团广东有限公司 一种xml报文解析方法及服务器
CN112328838A (zh) * 2020-10-30 2021-02-05 中国民航信息网络股份有限公司 一种报文解析预处理方法及其相关装置
CN112740635A (zh) * 2019-02-21 2021-04-30 华为技术有限公司 报文解析的方法、数据发送端、数据接收端和***

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1504925A (zh) * 2002-11-27 2004-06-16 用于导入和导出分层结构化数据的方法和计算机可读介质
WO2004090754A1 (en) * 2003-04-04 2004-10-21 Yahoo! Inc. A system for generating search results including searching by subdomain hints and providing sponsored results by subdomain
CN1896992A (zh) * 2006-06-15 2007-01-17 Ut斯达康通讯有限公司 基于应用定制解析xml文档的方法及装置
CN101071446A (zh) * 2007-06-22 2007-11-14 腾讯科技(深圳)有限公司 标记性语言文档的解析方法、解析模块和用户终端
CN101751457A (zh) * 2008-11-28 2010-06-23 国际商业机器公司 信息处理设备、数据库***、信息处理方法
CN102622444A (zh) * 2012-03-15 2012-08-01 深圳市同洲视讯传媒有限公司 一种xml报文处理方法和装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1504925A (zh) * 2002-11-27 2004-06-16 用于导入和导出分层结构化数据的方法和计算机可读介质
WO2004090754A1 (en) * 2003-04-04 2004-10-21 Yahoo! Inc. A system for generating search results including searching by subdomain hints and providing sponsored results by subdomain
CN1896992A (zh) * 2006-06-15 2007-01-17 Ut斯达康通讯有限公司 基于应用定制解析xml文档的方法及装置
CN101071446A (zh) * 2007-06-22 2007-11-14 腾讯科技(深圳)有限公司 标记性语言文档的解析方法、解析模块和用户终端
CN101751457A (zh) * 2008-11-28 2010-06-23 国际商业机器公司 信息处理设备、数据库***、信息处理方法
CN102622444A (zh) * 2012-03-15 2012-08-01 深圳市同洲视讯传媒有限公司 一种xml报文处理方法和装置

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106169988A (zh) * 2016-02-26 2016-11-30 北京元心科技有限公司 巡检***中传输数据的方法
CN106169988B (zh) * 2016-02-26 2019-10-15 北京元心科技有限公司 巡检***中传输数据的方法
CN108076010A (zh) * 2016-11-10 2018-05-25 ***通信集团广东有限公司 一种xml报文解析方法及服务器
CN108076010B (zh) * 2016-11-10 2020-09-08 ***通信集团广东有限公司 一种xml报文解析方法及服务器
CN112740635A (zh) * 2019-02-21 2021-04-30 华为技术有限公司 报文解析的方法、数据发送端、数据接收端和***
CN112740635B (zh) * 2019-02-21 2022-04-05 华为技术有限公司 报文解析的方法、数据发送端、数据接收端和***
US11956337B2 (en) 2019-02-21 2024-04-09 Huawei Technologies Co., Ltd. Message parsing method, data transmit end, data receive end, and system
CN112328838A (zh) * 2020-10-30 2021-02-05 中国民航信息网络股份有限公司 一种报文解析预处理方法及其相关装置
CN112328838B (zh) * 2020-10-30 2024-01-26 中国民航信息网络股份有限公司 一种报文解析预处理方法、***及存储介质

Also Published As

Publication number Publication date
CN104753891B (zh) 2019-04-05

Similar Documents

Publication Publication Date Title
CN100489879C (zh) 一种对页面数据进行校验的方法、***和服务器
CN102110132B (zh) 统一资源定位符匹配查找方法、装置和网络侧设备
CN101950312B (zh) 一种互联网网页内容解析方法
CN104484216A (zh) 服务接口文档和在线测试工具生成方法、装置
CN102647414B (zh) 协议解析方法、设备及***
CN103389969A (zh) 一种用于移动终端预览pdf文件的方法、装置和***
CN102982010A (zh) 提取文档结构的方法和装置
CN111241182A (zh) 数据处理方法和装置、存储介质和电子装置
CN103294652A (zh) 一种数据转换方法及***
CN104753891A (zh) 一种xml报文解析方法及装置
CN102799592A (zh) 富文本文档的解析方法和***
CN105573956A (zh) 序列化方法以及基于序列化的网络通信方法
CN103065625A (zh) 一种数字语音标签的添加方法及装置
CN104378234A (zh) 跨数据中心的数据传输处理方法及***
CN104461531A (zh) 一种报表***自定义函数的实现方法
CN101794318A (zh) Url解析方法及设备
CN101071446A (zh) 标记性语言文档的解析方法、解析模块和用户终端
CN104102701A (zh) 一种基于hive的历史数据存档与查询方法
CN110659165A (zh) 一种多节点服务器自动化测试方法和装置
CN101673299A (zh) 一种erp***及其数据搜索方法和装置
CN106230889A (zh) 移动应用业务组件资源管理方法及***
CN104898991A (zh) 一种基于自动化ral的寄存器访问方法及***
CN102999602A (zh) 一种数据解析方法和数据解析***
CN102663324A (zh) 一种电子文档防伪方法及装置
CN105094787B (zh) 企业互联网应用的处理方法及装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant