一种xml文件检索方法及装置的制造方法_2

文档序号:9597919阅读:来源:国知局
等。逻辑选择器,当用户判断所有简单选择器是否满足用户定义的逻辑关系。逻辑选择器按照逻辑关系,可将选择器分为与选择器、或选择器和非选择器。
[0067]在进行匹配时,首先获取元素的描述信息,判断描述信息是否与符合简单选择器描述的规则相符:若相符,则判断简单选择器之间的逻辑关系;当所有简单逻辑选择器满足所述逻辑选择器定义的逻辑关系时,则该元素匹配成功。当逻辑选择器为与选择器时,需要所有简单选择器都匹配后,才算匹配成功。当逻辑选择器为或选择器时,只需元素描述与其中任意简单选择器相匹配,即匹配成功。具体地,在匹配时,先从选择器树的最底层的简单选择器开始,逐次向上层匹配,任何一级匹配失败则全部匹配失败,退出选择程序,继续下一个元素。直到最外层的根选择器匹配成功,则检索成功一次。
[0068]由于样式选择器(CSS Selector)是一种模式,选择需要添加样式的HTML元素。而样式选择器有很多种,常用的有类型选择器、ID选择器、属性选择器和样式类选择器等。在众多选择器中,同样也适用于XML元素的表示。因此,使用丰富的样式选择器,几乎可以描述HTML包含的所有信息,对XML内容的覆盖也几乎是全部。因此,本发明通过样式选取器设置检索规则,可以实现对XML文件及HTML文件的检索,实现了检索工具的通用。
[0069]当检索规则设置完成后,检索器进入ready (准备)状态。在检索器进入ready状态后,调用Stop(停止)检索方法以前,对输入XML字符串的动作可以持续进行,这样在NodeJS中,就可以使用读入流对象持续的输入需要检索的XML字符串。一旦调用了 stop方法,资源将被释放,不能再继续输入了。本实施例中,检索器提供了 onReady、onMatched、onFree、onFindFirst 等事件,提供了 input、pause、resume、start、stop 等方法,用于对检索进程的控制。
[0070]如图5所示,在进行XML文件解析时,检索器需要对输入的XML内容进行缓存。在SAX解析器进行解析时,由于SAX对象有指定的长度,若不能一次,解析需要记住当前解析位置。当新的XML字符串输入时,需要恢复之前的情况,以便从记忆的解析位置继续解析。
[0071]在SAX解析器解析字符串时,当解析到元素时,触发opentag/text事件。检索器获知情况后,开始进行匹配。在匹配时,将元素压入堆栈,获取该元素的描述信息。接着,调用构造样式选择器与获取的描述信息进行匹配:当匹配时,将元素的相应信息保存至检索结果集合中,同时通知用户处理检索进程。用户根据检索结果决定目前的检索进程:或是立即停止检索,或是中途挂,或是恢复继续执行。当SAX解析到元素结束符时,触发closetag/text事件时,检索器将相应的元素退栈,表示该元素已经匹配结束。对于XML而言,其嵌套结构是完备的,每一个开始标签总会对应一个结束标签,而且不会出现标签嵌套之间的错位。元素从底向上逐一排列出来,就可以获取从XML根节点到当前节点的一条唯一的路径。根据该路径的信息,可以清楚文档的结构,以及元素的具体位置。
[0072]进一步地,当解析完一段XML后,检索器需要将当前的元素栈进行缓存,以保证检索的连续性。在解析XML文件时,可能是多次输入进来的,会出现文件不完整的情况,这时如果将当前的元素栈清除掉,后续的检索结果可能会出现遗漏等情况。因此,本发明中当一段XML文件解析结束后,保存元素栈的信息,同时在新的XML文件输入进来时,需要继续使用之前的元素栈,以保证检索的准确性及完整性。
[0073]参见图6,本发明还提供了一种XML文件检索装置,包括:
[0074]解析模块,用于通过SAX解析器对输入的XML字符串进行解析;
[0075]获取模块,用于当解析到新的元素后,获取元素的描述信息;
[0076]匹配模块,用于当获取的描述信息与预先设置的检索规则相匹配时,则将元素的描述信息保存至结果集合,同时通知用户处理检索结果。
[0077]进一步地,该装置还包括规则设置模块:
[0078]用于在设置检索规则时,利用样式解析器对用户输入的样式规则进行解析,并生成子样式列表;
[0079]根据子样式列表中的每一个子样式构造简单选择器;
[0080]根据子样式之间的逻辑关系构造逻辑选择器;
[0081]简单选择器与逻辑选择器组合成一个样式选择器,用于描述检索规则。
[0082]进一步地,匹配模块具体用于:
[0083]获取元素的描述信息,若描述信息符合简单选择器描述规则,则继续进行逻辑关系匹配;
[0084]当简单选择器之间的关系满足逻辑选择器定义的逻辑关系时,则该元素匹配成功。
[0085]进一步地,该装置包括第一缓存模块:
[0086]用于当新的XML字符串输入进来时,将XML字符串进行缓存后,再交由SAX解析器进行解析。
[0087]进一步地,该装置包括第二缓存模块:
[0088]用于当SAX解析器解析到新的元素开始时,将新元素压入堆栈;
[0089]当SAX解析器解析到该元素的元素结束符时,将该元素出栈。
[0090]进一步地,该装置包括第三缓存模块:
[0091]用于当解析完一段XML后,将当前的元素栈进行缓存;
[0092]当有新的XML文件输入时,则恢复使用之前缓存的元素栈。
[0093]本发明具有以下有益效果:
[0094](1)通过采用SAX解析器,可以对XML文件边解析边处理,不需要将文件预先读进内存,再构造庞大的document对象,可以有效节省内存空间,尤其当文件比较大的时候,效果更明显。
[0095](2)以事件的方式通知检索进度,可以更方便的控制检索的进程,当找到要找的内容后,可以立即停止检索,而且也可以中途挂起,并且还可以恢复继续执行。
[0096](3)使用样式选择器作为对要查找的内容的描述手段,可以表示出XML绝大部分的信息,非常通用。这样不用针对每一种解析或检索场景都单独设计处理逻辑,可以节省开发工作。
[0097](4)基于样式选择器的特性,本发明还可以解析HTML文件,对于前后台HTML这种非结构化数据的检索用处会非常大。
[0098]本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。
[0099]虽然通过实施例描述了本申请,本领域的技术人员知道,本申请有许多变形和变化而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
【主权项】
1.一种XML文件检索方法,其特征在于,包括: 通过SAX解析器对输入的XML字符串进行解析; 当解析到新的元素后,获取元素的描述信息; 当获取的所述描述信息与预先设置的检索规则相匹配时,则将所述描述信息保存至结果集合中,同时通知用户处理检索进程。2.如权利要求1所述的方法,其特征在于,在设置检索规则时,包括: 利用样式解析器对用户输入的样式规则进行解析,并生成子样式列表; 根据所述子样式列表中的每一个子样式构造简单选择器; 根据子样式之间的逻辑关系构造逻辑选择器; 所述简单选择器与所述逻辑选择器组合成一个样式选择器,用于描述所述检索规则。3.如权利要求2所述的方法,其特征在于,将获取的所述描述信息与预先设置的检索规则进行匹配时,包括: 获取元素的描述信息,若所述描述信息符合所述简单选择器描述的规则,则继续进行逻辑关系匹配; 当所述简单选择器满足所述逻辑选择器定义的逻辑关系时,则该元素匹配成功。4.如权利要求1所述的方法,其特征在于,所述方法包括: 当新的XML字符串输入进来时,将所述XML字符串进行缓存后,再交由所述SAX解析器进行解析。5.如权利要求1所述的方法,其特征在于,所述方法包括: 当所述SAX解析器解析到新的元素开始时,将新元素压入堆栈; 当所述SAX解析器解析到该元素的元素结束符时,将该元素出栈。6.如权利要求5所述的方法,其特征在于,所述方法包括: 当解析完一段XML后,将当前的元素栈进行缓存; 当有新的XML文件输入时,则恢复使用之前缓存的所述元素栈。7.—种XML文件检索装置,其特征在于,包括: 解析模块,用于通过SAX解析器对输入的XML字符串进行解析; 获取模块,用于当解析到新的元素后,获取元素的描述信息; 匹配模块,用于当获取的所述描述信息与预先设置的检索规则相匹配时,则将所述描述信息保存至结果集合,同时通知用户处理检索进程。8.如权利要求7所述的装置,其特征在于,所述装置还包括规则设置模块: 用于在设置检索规则时,利用样式解析器对用户输入的样式规则进行解析,并生成子样式列表; 根据所述子样式列表中的每一个子样式构造简单选择器; 根据子样式之间的逻辑关系构造逻辑选择器; 所述简单选择器与所述逻辑选择器组合成一个样式选择器,用于描述所述检索规则。9.如权利要求8所述的装置,其特征在于,所述匹配模块具体用于: 获取元素的描述信息,若所述描述信息符合所述简单选择器描述规则,则继续进行逻辑关系匹配; 当所述简单选择器之间的关系满足所述逻辑选择器定义的逻辑关系时,则该元素匹配成功。10.如权利要求7所述的装置,其特征在于,所述装置包括第一缓存模块: 用于当新的XML字符串输入进来时,将所述XML字符串进行缓存后,再交由所述SAX解析器进行解析。11.如权利要求8所述的装置,其特征在于,所述装置包括第二缓存模块: 当所述SAX解析器解析到新的元素开始时,将新元素压入堆栈; 当所述SAX解析器解析到该元素的元素结束符时,将该元素出栈。12.如权利要求11所述的装置,其特征在于,所述装置包括第三缓存模块: 用于当解析完一段XML后,将当前的元素栈进行缓存; 当有新的XML文件输入时,则恢复使用之前缓存的所述元素栈。
【专利摘要】本发明公开了一种XML文件解析方法及装置。该方法包括:通过SAX解析器对输入的XML字符串进行解析;当解析到新的元素后,获取元素的描述信息;当获取的描述信息与预先设置的检索规则相匹配时,则将元素的描述信息保存至结果集合,同时通知用户处理检索进程。本发明所提供的XML文件检索方法,不需要预先将文件读进内存,可以有效节省内存空间;通过采用样式选择器作为对要查找的内容的描述手段,可以表示出大部分的HTML及XML信息,非常通用,有效节省开发工作。
【IPC分类】G06F17/30
【公开号】CN105354282
【申请号】CN201510728080
【发明人】程少虹
【申请人】青岛海尔智能家电科技有限公司
【公开日】2016年2月24日
【申请日】2015年10月30日
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1