本发明属于xml文件处理,更具体地,涉及一种低内存消耗的xml解析方法、系统及介质。
背景技术:
1、xml文件格式是一种常见的文件格式,在计算机体系中应用非常广泛。扩展标记语言xml是一种简单的数据存储语言,使用一系列简单的标记描述数据,而这些标记可以用方便的方式建立。虽然xml极其简单易于掌握和使用,但xml比二进制数据要占用更多的空间,对内存消耗更大。因此使用尽可能少的内存资源对xml文件进行高效快速的解析是值得解决的问题。
技术实现思路
1、针对现有技术的至少一个缺陷或改进需求,本发明提供了一种低内存消耗的xml文件解析反复大,适用于在不读取整个xml文件的情况下使用很少的内存资源对xml文件结构进行解析处理。
2、为实现上述目的,按照本发明的一个方面,提供了一种低内存消耗的xml解析方法,包括
3、定义xml文件处理节点的数据结构,所述数据结构包括节点node和属性attribute的元素;
4、扫描遍历所述xml文件数据流,根据所述定义的节点数据结构,解析xml文件生成xml文件结构树;
5、定位目标元素在根据所述xml文件结构树中的位置,并获取所述目标元素的数据结构信息;
6、根据所述数据结构信息,从xml文件中读取所述目标元素的完整信息。
7、优选的,所述节点node的元素包括节点名称、节点值、子节点数量、子节点列表、属性列表、节点值相对文件头部的偏移量;所述属性attribute的元素包括属性名称、属性值相对文件头部的偏移量。
8、优选的,所述根据所述xml文件结构树,定位目标元素相对文件头的位置包括:
9、获取所述xml文件结构树中记录的所述目标元素所在节点相对文件头部的偏移量,根据所述偏移量定位到所述目标元素的位置。
10、优选的,所述根据所述xml文件结构树,定位目标元素相对文件头的位置的另一种实现方式为:
11、将所述xml文件加载进入内存,记录所述目标元素所在节点在内存中的地址,根据所述记录的地址定位到所述目标元素的位置。
12、优选的,所述根据所述定义的节点数据结构,解析xml文件生成xml文件结构树,包括:根据所述定义的节点数据结构,将xml文件相关元素信息记录到节点node和属性attribute中,生成所述xml文件结构树。
13、优选的,扫描遍历xml文件数据流,获取所述文件头部或根节点位置,从所述文件头部或根节点开始遍历xml文件结构树中每一个子节点;
14、当扫描到一个新的子节点,则新建一个子节点,将所述新子节点加入上一级的子节点列表,记录下一个字符的节点值相对所述文件头部的偏移量到所述新子节点名称中。
15、优选的,当扫描到“”则新建一条属性,将所述属性加入所述节点node的属性列表,记录下一个字符的节点值相对所述文件头部的偏移量到新建属性的属性名称中;
16、当扫描到“=“”则记录下一个字符的节点值相对文件头的偏量移到所述新建属性的属性值中。
17、优选的,若扫描到标识符“/>”,则该节点结束,返回上一级继续处理;若扫描到标识符“</”,则直接扫描到下一个“>”后该节点结束,返回上一级继续处理。
18、按照本发明的另一个方面,还提供了一种低内存消耗的xml解析系统,包括:
19、定义模块,用于定义xml文件处理节点的数据结构,所述数据结构包括节点node和属性attribute的元素;
20、解析模块,用于扫描遍历所述xml文件数据流,根据所述定义的节点数据结构,解析xml文件生成xml文件结构树;
21、定位模块,用于定位目标元素在根据所述xml文件结构树中的位置,并获取所述目标元素的数据结构信息;
22、读取模块,用于根据所述数据结构信息,从xml文件中读取所述目标元素的完整信息。
23、按照本发明的另一个方面,还提供了一种电子设备,包括至少一个处理单元、以及至少一个存储单元,其中,所述存储单元存储有计算机程序,当所述计算机程序被所述处理单元执行时,使得所述处理单元执行上述任一项方法的步骤。
24、按照本发明的另一个方面,还提供了一种计算机可读介质,其存储有可由电子设备执行的计算机程序,当所述计算机程序在电子设备上运行时,使得所述电子设备执行上述任一项方法的步骤。
25、总体而言,通过本发明所构思的以上技术方案与现有技术相比,能够取得下列有益效果:
26、(1)本发明提供的一种低内存消耗的xml解析方法,在对xml文件进行解析时,通过定义处理节点的数据结构,在解析xml文件生成xml文件结构树时,只根据定义的数据结构来对xml文件进行扫描,在xml文件结构树中只标记节点的位置,不标记节点具体值,因此解析数据时只需要识别节点的数据结构信息,便能快速定位到节点位置,进而根据需求读取所要解析的目标元素的节点信息,实现对xml文件的快速解析访问。
27、(2)本发明提供的一种低内存消耗的xml解析方法,通过从前到后扫描xml文件的方式来标记每个节点的位置,无需加载整个xml文件到内存中进行解析,也无需加载节点具体值,因此大大降低了xml文件解析的内存消耗。
1.一种低内存消耗的xml解析方法,其特征在于,包括:
2.如权利要求1所述的低内存消耗的xml解析方法,其特征在于,所述节点node的元素包括节点名称、子节点数量、子节点列表、属性列表、节点值相对文件头部的偏移量;所述属性attribute的元素包括属性名称、属性值相对文件头部的偏移量。
3.如权利要求1所述的低内存消耗的xml解析方法,其特征在于,所述根据所述xml文件结构树,定位目标元素相对文件头的位置为:
4.如权利要求1所述的低内存消耗的xml解析方法,其特征在于,所述根据所述xml文件结构树,定位目标元素相对文件头的另一种实现方式为:
5.如权利要求1所述的低内存消耗的xml解析方法,其特征在于,所述根据所述定义的数据结构,解析xml文件生成xml文件结构树包括:
6.如权利要求5所述的低内存消耗的xml解析方法,其特征在于,
7.如权利要求6所述的低内存消耗的xml解析方法,其特征在于,
8.如权利要求7所述的低内存消耗的xml解析方法,其特征在于,
9.一种低内存消耗的xml解析系统,其特征在于,包括:
10.一种计算机可读介质,其特征在于,其存储有可由电子设备执行的计算机程序,当所述计算机程序在电子设备上运行时,使得所述电子设备执行权利要求1~7任一项所述方法的步骤。