一种解析XML文档的方法及系统与流程

文档序号:17642635发布日期:2019-05-11 00:46阅读:388来源:国知局
一种解析XML文档的方法及系统与流程

本发明涉及服务器测试技术领域,具体地说是一种解析xml文档的方法及系统。



背景技术:

当前在linuxshell下做服务器测试架构开发时,配置文件格式使用的是类似txt的普通文本文档,如果采用xml(extensiblemarkuplanguage,可扩展至标准语言)文档来开发的话可以带来很多的好处,如文档的内容和结构完全分离、互操作性强、规范统一和支持多种编码等。

而在shell下开发解析xml文本没有普通文本文档方便,需要安装第三方的工具,所以导致用得少。



技术实现要素:

本发明实施例中提供了一种解析xml文档的方法及系统,以解决现有技术中因对xml文档解析时需借助第三方工具,操作复杂的问题。

为了解决上述技术问题,本发明实施例公开了如下技术方案:

本发明第一方面提供了一种解析xml文档的方法,包括以下步骤:

获取要查找的xml文档的关键字和xml文档的路径;

查找关键字所在的起始行位置和终止行的位置;

判断起始行位置和终止行位置是否重合,若重合,输出关键字所在行的字段,若不重合,输出起始行的字段以及起始行与终止行之间各行的字段。

结合第一方面,在第一方面第一种可能的实现方式中,所述方法在判断起始行位置和终止行位置是否重合之前还包括:

根据关键字的自闭合性,输出解析内容。

结合第一方面,在第一方面第一种可能的实现方式中,所述根据关键字的自闭合性,输出解析内容的具体过程为:

判断关键字是否在自闭合元素里;

若是,则输出自闭合标签所在行的字段;

若否,则输出关键字所在起始行内的字段。

结合第一方面,在第一方面第一种可能的实现方式中,在起始行位置和终止行位置重合时,退出解析过程;起始行位置和终止行位置不重合时,输出起始行和终止行之间各行的字段。

结合第一方面,在第一方面第二种可能的实现方式中,将所述方法封装为函数,将函数写入shell脚本,调用函数,进行xml文档解析

本发明第二方面提供了一种解析xml文档的系统,所述系统包括:

信息获取模块,用于获取要查找的xml文档的关键字和xml文档的路径;

信息处理模块,用于查找关键字所在的起始行位置和终止行位置;

第一判断模块,用于判断起始行位置和终止行位置是否重合;

第一输出模块,当起始行位置和终止行位置重合时,输出关键字所在行的字段,当起始行位置和终止行位置不重合时,输出起始行的字段以及起始行与终止行之间各行的字段。

结合第二方面,在第二方面第一种可能的实现方式中,所述系统还包括第一封装模块,用于将所述信息获取模块、信息处理模块、第一判断模块和第一输出模块封装为函数。

结合第二方面,在第二方面第二种可能的实现方式中,所述系统还包括:

第二判断模块,用于判断关键字是否在自闭合元素里;

第二输出模块,若关键字在自闭合元素里,输出自闭合标签内所在行的字段;若关键字不在自闭合元素里,输出起始行的字段以及起始行与终止行之间各行的字段。

结合第二方面,在第二方面第二种可能的实现方式中,所述第一输出模块在起始行位置和终止行位置重合时,无输出;起始行位置和终止行位置不重合时,输出起始行和终止行之间各行的字段。

结合第二方面,在第二方面第二种可能的实现方式中,所述系统还包括第二封装模块,用于将信息获取模块、信息处理模块、第一判断模块、第一输出模块、第二判断模块和第二输出模块封装为函数。

本发明第二方面的所述解析xml文档的系统能够实现第一方面及第一方面的各实现方式中的方法,并取得相同的效果。

发明内容中提供的效果仅仅是实施例的效果,而不是发明所有的全部效果,上述技术方案中的一个技术方案具有如下优点或有益效果:

1、分析xml文档中关键字所在的起始行和终止行的位置,输出不同的字段,实现xml的解析,整个过程操作简单,不需要借助第三方工具即可实现xml文档的解析,提高工作效率。

2、将根据关键字的自闭合性输出解析内容的过程加入到xml的解析方法中,使整个解析过程有更强大的支持能力,适应更多的应用场景。

3、将对xml文档的解析过程封装为函数,写入shell脚本中,方便shell脚本调用,为支持xml配置文档的服务器测试架构的开发提供支持,提高服务器测试脚本的开发效率。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明所述方法其一实施例的流程示意图;

图2是本发明所述方法另一实施例的流程示意图;

图3是本发明所述系统其一实施例的结构示意图;

图4是本发明所述系统另一实施例的结构示意图。

具体实施方式

为能清楚说明本方案的技术特点,下面通过具体实施方式,并结合其附图,对本发明进行详细阐述。下文的公开提供了许多不同的实施例或例子用来实现本发明的不同结构。为了简化本发明的公开,下文中对特定例子的部件和设置进行描述。此外,本发明可以在不同例子中重复参考数字和/或字母。这种重复是为了简化和清楚的目的,其本身不指示所讨论各种实施例和/或设置之间的关系。应当注意,在附图中所图示的部件不一定按比例绘制。本发明省略了对公知组件和处理技术及工艺的描述以避免不必要地限制本发明。

如图1所示,本发明的一种解析xml文档的方法,包括:

s1,获取要查找的xml文档的关键字和xml文档的路径。

s2,查找关键字所在的起始行位置和终止行的位置。

查找关键字所在的起始行的位置,将起始行的位置赋值给变量col,查找关键字所在的终止行的位置,并将终止行的位置赋值给变量last。将起始行的位置和终止行的位置分别赋值,是为了步骤s3中两者比较的方便。

s3,判断起始行位置和终止行位置是否重合,若重合,输出关键字所在行的字段,若不重合,输出起始行的字段以及起始行与终止行之间各行的字段。

起始行位置和终止行位置重合即关键字的起始行和终止行在同一行,如<unit.1item="test"testa=1testb=2testc=3/>,关键字是unit.1,关键字仅在这一行,输出字段为item="test"testa=1testb=2testc=3;若不重合,

关键字依然是unit.1,输出字段为:

item="changedirectory"

command="cd${rcd}"

l6=""

l10="y"

l12=""

expected=""

warning=""

delay=""

将上述步骤封装为一个函数parsexml,需要解析的关键字为unit.1,则调用方法为xml_parse"unit.1""sample.xml"。

如图2所示,在步骤s2和步骤s3之间加入步骤s23,根据关键字的自闭合性,输出解析内容的步骤,具体为:

判断关键字是否在自闭合元素里,若是,则输出自闭合标签所在行的字段;若否,则输出关键字所在起始行内的字段。

自闭合元素是指xml文档中的关键字没有形成一对完整的标签,如<unit.1item="test"testa=1testb=2testc=3/>,对于关键字unit.1并没有一对完整的标签;非自闭合元素即在xml文档中形成一对完整的标签,如

对于关键字unit.1,在一对标签里。

对于自闭合元素,输出字段为:

item="test"

testa=1

testb=2

testc=3

对于非自闭合元素,输出字段为item="changedirectory"。

加入步骤s23之后,步骤s3得到简化,因关键字在自闭合元素里时,关键字的起始行位置和终止行位置重合,在步骤s23以输出解析结果,因此本实施例中步骤s3在判断起始位置与终止位置重合后,直接退出解析过程。在起始位置和终止为止不重合时,即对于步骤s23中的非自闭合元素,需要输出起始行和终止行之间各行的字段,即输出:

command="cd${rcd}"

l6=""

l10="y"

l12=""

expected=""

warning=""

delay=""

同样,可将本实施例的步骤封装为函数,进行调用,实现xml的解析。

可见,上述两个实施例中的解析结果是一致的。

如图3所示,本发明的解析xml文档的系统包括信息获取模块1、信息处理模块2、第一判断模块3、第一输出模块4和第一封装模块5。

信息获取模块1用于获取要查找的xml文档的关键字和xml文档的路径;信息处理模块2用于查找关键字所在的起始行位置和终止行位置;第一判断模块3用于判断起始行位置和终止行位置是否重合;第一输出模块5当起始行位置和终止行位置重合时,输出关键字所在行的字段,当起始行位置和终止行位置不重合时,输出起始行的字段以及起始行与终止行之间各行的字段;第一封装模块5用于将信息获取模块1、信息处理模块2、第一判断模块3和第一输出模块4封装为函数,在使用时,直接调用函数实现xml文档的解析。

如图4所示,在图3所示系统实施例的基础上,本实施例的系统还包括第二判断模块6、第二输出模块7和第二封装模块8。

第二判断模块6用于判断关键字是否在自闭合元素里;第二输出模块7若关键字在自闭合元素里,输出自闭合标签内所在行的字段;若关键字不在自闭合元素里,输出起始行的字段以及起始行与终止行之间各行的字段。本实施例中第一输出模块4在起始行位置和终止行位置重合时,无输出;起始行位置和终止行位置不重合时,输出起始行和终止行之间各行的字段。第二封装模块8将信息获取模块、信息处理模块、第一判断模块、第一输出模块、第二判断模块和第二输出模块封装为函数,在使用时,直接调用函数实现xml文档的解析。

以上所述只是本发明的优选实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也被视为本发明的保护范围。

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