Xml文件解析方法、xml文件解析装置和终端的制作方法

文档序号:6425367阅读:133来源:国知局
专利名称:Xml文件解析方法、xml文件解析装置和终端的制作方法
技术领域
本发明涉及移动通信领域,具体而言,涉及一种XML文件解析方法、一种XML文件解析方法和一种终端。
背景技术
在现阶段,XML已经成为一种通用的数据交换格式,其具有的平台无关性、语言无关性,给信息技术的交互带来了极大的方便。目前,解析XML格式的文件通常有四种解析方案D0M,SAX, D0M4J, JDOM。但是,随着进行交互的数据越来越多,也就导致XML文件的体积也变得更大(尤其是包含了大数据的XML文件,例如,可以大于120M),这就造成上述四种解析方案在解析XML 文件,生成结构树时,解析速度很慢,极大影响用户的工作效率。而且,将XML文件整个读入,然后对其解析,需要长时间地占用大量内存,对执行解析工作的硬件压力也较大。因此,需要一种新的XML文件解析方式,能够提高体积较大的XML文件的解析效率,并降低解析工作造成的硬件压力。

发明内容
本发明所要解决的技术问题在于,提供一种新的XML文件解析方式,能够提高体积较大的XML文件的解析效率,并降低解析工作造成的硬件压力。有鉴于此,本发明提供一种XML文件解析方法,包括步骤102,读入XML文件;步骤104,过滤掉XML文件中的预定类型的数据;步骤106,对过滤掉预定类型的数据的XML文件进行解析。通过该技术方案,不影响XML结构的情况下,将不必要的数据去掉,减小了 XML 文件的体积,保证了解析的效率。预定类型的数据可以是存储在XML多个类型的节点(也称为元素)下的数据,其中,对于占用空间较大的大数据,该技术方案尤为适用。解析操作可以利用DOM、SAX、D0M4J、JDOM四种方式中任一种的接口来实现。在上述技术方案中,优选地,步骤104包括在XML文件中查找预定类型的数据对应的每个节点的开始标记和结束标记,过滤掉每个节点的开始标记和结束标记之间的数据。通过该技术方案,由于XML文件中存储的数据,一般指文本数据,均位于其树形结构的子节点之下,所以,通过查找子节点的开始标记和结束标记,可以方便地去除该子节点下的数据。在上述技术方案中,优选地,步骤102具体为分多个数据块读入XML文件;步骤 104具体为在读入每个数据块时,都对每个数据块中的预定类型的数据进行过滤。通过该技术方案,将XML分块读入,而不需整个读入,能够有效地缓解硬件如内存的压力。在上述技术方案中,优选地,步骤104具体为在多个数据块中,查找预定类型的数据对应的每个节点的开始标记,并在找到开始标记后查找每个节点的结束标记,其中,对于预定类型的数据对应的预定节点,在读入的数据块中存在预定节点的开始标记和结束标记的情况下,过滤掉数据块中预定节点的开始标记和结束标记之间的数据,在数据块中仅存在预定节点的开始标记的情况下,过滤掉数据块中的预定节点的开始标记之后的数据, 在数据块中仅存在预定节点的结束标记的情况下,过滤掉数据块中的预定节点的结束标记之前的数据,在数据块中不存在预定类型的数据对应的任一节点的开始标记和结束标记的情况下,则在当前查找任一节点的结束标记时,过滤掉数据块中的所有数据。在上述技术方案中,优选地,步骤102具体为设置固定大小的缓存区域,通过缓存区域将XML文件分多个数据块读入。本发明还提供一种XML文件解析装置,包括读入模块,读入XML文件;过滤模块, 过滤掉XML文件中的预定类型的数据;解析模块,对过滤掉预定类型的数据的XML文件进行解析。通过该技术方案,在不影响XML结构的情况下,将不必要的数据去掉,减小了 XML文件的体积,保证了解析的效率。预定类型的数据可以是存储在XML多个类型的节点(也称为元素)下的数据,其中,对于占用空间较大的大数据,该技术方案尤为适用。解析操作可以利用DOM、SAX、D0M4J、JDOM四种方式中任一种的接口来实现。在上述技术方案中,优选地,过滤模块在XML文件中查找预定类型的数据对应的每个节点的开始标记和结束标记,过滤掉每个节点的开始标记和结束标记之间的数据。通过该技术方案,由于XML文件中存储的数据,一般指文本数据,均位于其树形结构的子节点之下,所以,通过查找子节点的开始标记和结束标记,可以方便地去除该子节点下的数据。在上述技术方案中,优选地,读入模块分多个数据块读入XML文件;在读入模块读入每个数据块时,过滤模块都对每个数据块中的预定类型的数据进行过滤。通过该技术方案,将XML分块读入,而不需整个读入,能够有效地缓解硬件如内存的压力。在上述技术方案中,优选地,过滤模块在多个数据块中,查找预定类型的数据对应的每个节点的开始标记,并在找到开始标记后查找每个节点的结束标记,其中,对于预定类型的数据对应的预定节点,在读入的数据块中存在预定节点的开始标记和结束标记的情况下,过滤模块过滤掉数据块中预定节点的开始标记和结束标记之间的数据,在数据块中仅存在预定节点的开始标记的情况下,过滤模块过滤掉数据块中的预定节点的开始标记之后的数据,在数据块中仅存在预定节点的结束标记的情况下,过滤模块过滤掉数据块中的预定节点的结束标记之前的数据,在数据块中不存在预定类型数据对应的任一节点的开始标记和结束标记的情况下,则在当前查找任一节点的结束标记时,过滤模块过滤掉数据块中的所有数据。在上述技术方案中,优选地,读入模块设置固定大小的缓存区域,通过缓存区域将 XML文件分多个数据块读入。本发明还提供一种终端,包括如上所述的XML文件解析装置。通过以上技术方案,本发明提供一种XML文件解析方法、一种XML文件解析装置和一种终端,通过将XML分块读入,并每次读入的时候去除其中不必要的数据,提高了 XML文件的解析效率,并缓解了内存等硬件的压力。


图1是根据本发明的一个实施例的XML文件解析方法的流程图;图2是根据本发明的一个实施例的XML文件解析装置的框图;图3是根据本发明的一个实施例的终端的框图4是根据本发明的一个实施例的终端的使用流程图。
具体实施例方式为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式
对本发明进行进一步的详细描述。在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明并不限于下面公开的具体实施例的限制。图1是根据本发明的一个实施例的XML文件解析方法的流程图。如图1所示,本发明提供一种XML文件解析方法,包括步骤102,读入XML文件; 步骤104,过滤掉XML文件中的预定类型的数据;步骤106,对过滤掉预定类型的数据的XML 文件进行解析。通过该技术方案,不影响XML结构的情况下,将不必要的数据去掉,减小了 XML文件的体积,保证了解析的效率。预定类型的数据可以是存储在XML多个类型的节点 (也称为元素)下的数据,其中,对于占用空间较大的大数据,该技术方案尤为适用。解析操作可以利用DOM、SAX、D0M4J、JDOM四种方式中任一种的接口来实现。在上述技术方案中,步骤104包括在XML文件中查找预定类型的数据对应的每个节点的开始标记和结束标记,过滤掉每个节点的开始标记和结束标记之间的数据。通过该技术方案,由于XML文件中存储的数据,一般指文本数据,均位于其树形结构的子节点之下,所以,通过查找子节点的开始标记和结束标记,可以方便地去除该子节点下的数据。在上述技术方案中,步骤102具体为分多个数据块读入XML文件;步骤104具体为在读入每个数据块时,都对每个数据块中的预定类型的数据进行过滤。通过该技术方案,将XML分块读入,而不需整个读入,能够有效地缓解硬件如内存的压力。在上述技术方案中,步骤104具体为在多个数据块中,查找预定类型的数据对应的每个节点的开始标记,并在找到开始标记后查找每个节点的结束标记,其中,对于预定类型的数据对应的预定节点,在读入的数据块中存在预定节点的开始标记和结束标记的情况下,过滤掉数据块中预定节点的开始标记和结束标记之间的数据,在数据块中仅存在预定节点的开始标记的情况下,过滤掉数据块中的预定节点的开始标记之后的数据,在数据块中仅存在预定节点的结束标记的情况下,过滤掉数据块中的预定节点的结束标记之前的数据,在数据块中不存在预定类型的数据对应的任一节点的开始标记和结束标记的情况下, 则在当前查找任一节点的结束标记时,过滤掉数据块中的所有数据。在上述技术方案中,步骤102具体为设置固定大小的缓存区域,通过缓存区域将 XML文件分多个数据块读入。图2是根据本发明的一个实施例的XML文件解析装置的框图。如图2所示,本发明还提供一种XML文件解析装置200,包括读入模块202,读入 XML文件;过滤模块204,过滤掉XML文件中的预定类型的数据;解析模块206,对过滤掉预定类型的数据的XML文件进行解析。通过该技术方案,在不影响XML结构的情况下,将不必要的数据去掉,减小了 XML文件的体积,保证了解析的效率。预定类型的数据可以是存储在 XML多个类型的节点(也称为元素)下的数据,其中,对于占用空间较大的大数据,该技术方案尤为适用。解析操作可以利用DOM、SAX、D0M4J、JDOM四种方式中任一种的接口来实现。
在上述技术方案中,过滤模块204在XML文件中查找预定类型的数据对应的每个节点的开始标记和结束标记,过滤掉每个节点的开始标记和结束标记之间的数据。通过该技术方案,由于XML文件中存储的数据,一般指文本数据,均位于其树形结构的子节点之下,所以,通过查找子节点的开始标记和结束标记,可以方便地去除该子节点下的数据。在上述技术方案中,读入模块202分多个数据块读入XML文件;在读入模块202读入每个数据块时,过滤模块204都对每个数据块中的预定类型的数据进行过滤。通过该技术方案,将XML分块读入,而不需整个读入,能够有效地缓解硬件如内存的压力。在上述技术方案中,过滤模块204在多个数据块中,查找预定类型的数据对应的每个节点的开始标记,并在找到开始标记后查找每个节点的结束标记,其中,对于预定类型的数据对应的预定节点,在读入的数据块中存在预定节点的开始标记和结束标记的情况下,过滤模块204过滤掉数据块中预定节点的开始标记和结束标记之间的数据,在数据块中仅存在预定节点的开始标记的情况下,过滤模块204过滤掉数据块中的预定节点的开始标记之后的数据,在数据块中仅存在预定节点的结束标记的情况下,过滤模块204过滤掉数据块中的预定节点的结束标记之前的数据,在数据块中不存在预定类型数据对应的任一节点的开始标记和结束标记的情况下,则在当前查找任一节点的结束标记时,过滤模块204 过滤掉数据块中的所有数据。在上述技术方案中,读入模块202设置固定大小的缓存区域,通过缓存区域将XML 文件分多个数据块读入。图3是根据本发明的一个实施例的终端的框图。如图3所示,本发明还提供一种终端300,包括如上所述的XML文件解析装置 200。图4是根据本发明的一个实施例的终端的使用流程图。XML格式当前已经成为一种通用的数据交换格式,它的平台无关性、语言无关性已经给信息技术的交互带来了极大的方便。本实施例中的终端,通过java流方式将XML文件分固定块读取,过滤其中的大数据节点,从而获取XML完整结构所在的数据串,然后利用现有DOM、SAX、D0M4J、JDOM之一提供的接口进行整个XML数据串的解析功能进行解析。对于存在一个大数据节点的XML文件, 本实施例中的具体步骤如下步骤402,使用java中的输入流FileInputMream方法打开XML文件;步骤404,通过readO接口读取固定大小的数据块到缓存中;步骤406,通过Mring中的indexOf方法,判断缓存中的数据块中是否存在大数据节点的开始(例如,该大数据节点的开始标记可以是〈binary ,如果不存在,进入步骤 408,如果存在,进入步骤410 ;步骤408,将当前的数据块中的所有数据存储到数据串A中,并进入步骤404,继续读取数据块;步骤410,如果存在,将该数据块中开始标记之前的所有数据记录到数据串A中;步骤412,继续采用indexOf方法,判断缓冲的数据块中是否存在大数据节点的结束标记(如,可以是〈/binary ,如果不存在,进入步骤414,如果存在,进入步骤416 ;步骤414,过滤掉该数据块的全部数据,并通过read()接口继续读取下一个数据块;步骤416,保存结束标记之后的所有数据追加到A中,包括后续读取的数据块中的数据;步骤418,形成待解析的数据串A,其中,如果XML数据串中不只包括一个大数据节点或还存在其他类型的待过滤的数据的话,则继续查找其他的节点开始标记,并重复上述的步骤,并最终形成待解析的XML数据串;步骤420,最后通过DOM、SAX、D0M4J、JDOM提供的接口,传入数据A串(剔除大节点的数据),正常解析XML结构。通过以上技术方案,可以实现一种XML文件解析方法、一种XML文件解析装置以及一种终端,通过分块读入XML文件,并在每次读入的时候进行数据过滤,大大缩短了文件的处理时间,尤其是对于包含大数据节点(大小大于20M)的XML文件,同时,使得解析环境的硬件环境要求大大降低,极大地缩减了硬件的投入成本。以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种XML文件解析方法,其特征在于,包括 步骤102,读入所述XML文件;步骤104,过滤掉所述XML文件中的预定类型的数据; 步骤106,对过滤掉所述预定类型的数据的XML文件进行解析。
2.根据权利要求1所述的XML文件解析方法,其特征在于,所述步骤104包括 在所述XML文件中查找所述预定类型的数据对应的每个节点的开始标记和结束标记,过滤掉所述每个节点的开始标记和结束标记之间的数据。
3.根据权利要求1所述的XML文件解析方法,其特征在于,所述步骤102具体为 分多个数据块读入所述XML文件;所述步骤104具体为在读入每个数据块时,都对所述每个数据块中的所述预定类型的数据进行过滤。
4.根据权利要求3所述的XML文件解析方法,其特征在于,所述步骤104具体为在所述多个数据块中,查找所述预定类型的数据对应的每个节点的开始标记,并在找到所述开始标记后查找所述每个节点的结束标记,其中,对于所述预定类型的数据对应的预定节点,在读入的数据块中存在所述预定节点的开始标记和结束标记的情况下,过滤掉所述数据块中所述预定节点的开始标记和结束标记之间的数据,在所述数据块中仅存在所述预定节点的开始标记的情况下,过滤掉所述数据块中的所述预定节点的开始标记之后的数据,在所述数据块中仅存在所述预定节点的结束标记的情况下,过滤掉所述数据块中的所述预定节点的结束标记之前的数据,在所述数据块中不存在所述预定类型的数据对应的任一节点的开始标记和结束标记的情况下,则在当前查找所述任一节点的结束标记时,过滤掉所述数据块中的所有数据。
5.根据权利要求3或4所述的XML文件解析方法,其特征在于,所述步骤102具体为 设置固定大小的缓存区域,通过所述缓存区域将所述XML文件分所述多个数据块读入。
6.一种XML文件解析装置,其特征在于,包括 读入模块,读入所述XML文件;过滤模块,过滤掉所述XML文件中的预定类型的数据; 解析模块,对过滤掉所述预定类型的数据的XML文件进行解析。
7.根据权利要求6所述的XML文件解析装置,其特征在于,所述过滤模块在所述XML文件中查找所述预定类型的数据对应的每个节点的开始标记和结束标记,过滤掉所述每个节点的开始标记和结束标记之间的数据。
8.根据权利要求6所述的XML文件解析装置,其特征在于,所述读入模块分多个数据块读入所述XML文件;在所述读入模块读入每个数据块时,所述过滤模块都对所述每个数据块中的所述预定类型的数据进行过滤。
9.根据权利要求8所述的XML文件解析装置,其特征在于,所述过滤模块在所述多个数据块中,查找所述预定类型的数据对应的每个节点的开始标记,并在找到所述开始标记后查找所述每个节点的结束标记,其中,对于所述预定类型的数据对应的预定节点,在读入的数据块中存在所述预定节点的开始标记和结束标记的情况下,所述过滤模块过滤掉所述数据块中所述预定节点的开始标记和结束标记之间的数据,在所述数据块中仅存在所述预定节点的开始标记的情况下,所述过滤模块过滤掉所述数据块中的所述预定节点的开始标记之后的数据,在所述数据块中仅存在所述预定节点的结束标记的情况下,所述过滤模块过滤掉所述数据块中的所述预定节点的结束标记之前的数据,在所述数据块中不存在所述预定类型的数据对应的任一节点的开始标记和结束标记的情况下,则在当前查找所过滤模块过滤掉所述数据块中的所有数据。述任一节点的结束标记时,所述
10.根据权利要求8或9所述的XML文件解析装置,其特征在于,所述读入模块设置固定大小的缓存区域,通过所述缓存区域将所述XML文件分所述多个数据块读入。
11.一种终端,其特征在于,包括如权利要求6至10中任一项所述的XML文件解析装置。
全文摘要
本发明提供一种XML文件解析方法,包括步骤102,读XML文件;步骤104,过滤掉XML文件中的预定类型的数据;步骤106,对过滤掉预定类型的数据的XML文件进行解析。本发明还提供一种XML文件解析装置和一种终端。通过本发明,通过将XML分块读入,并每次读入的时候去除其中不必要的数据,提高了XML文件的解析效率,并缓解了内存等硬件的压力。
文档编号G06F17/30GK102289445SQ20111014580
公开日2011年12月21日 申请日期2011年6月1日 优先权日2011年6月1日
发明者侯元斌 申请人:宇龙计算机通信科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1