基于DOM的节点查找方法、设备、存储介质及装置与流程

文档序号:15737108发布日期:2018-10-23 21:40阅读:186来源:国知局

本发明涉及网络技术领域,尤其涉及基于DOM的节点查找方法、设备、存储介质及装置。



背景技术:

文档对象模型(Document Object Model,DOM)是一种标准化的编程接口,作为一种应用程序编程接口(Application Programming Interface,API),通过运用DOM可以动态地访问程序和脚本。

DOM的基本原理在于,为整个文档提供一个访问模型,简而言之,通过DOM可将整个文档视为一个树形结构,文档内的所有要素都将被视为该树形结构中的单个节点;并且,由于DOM树形结构中的各个节点之间都存在关联性,也就可以很好地描述文档中的各个要素彼此之间的联系。

可参考图1,图1为DOM树形结构的示意图。

DOM树形结构中的节点存在多种类型,比如,文档节点,若欲访问网页中的具体属性或者任意文本,皆可基于文档节点进行导航,文档节点可被视为根节点;元素节点,表示网页页面中的标签;属性节点,表示标签中包含的属性;文本节点,表示标签中包含的文本内容等。如图1所示,正是基于各种类型的节点以及各个节点之间的连接关系,就构成了一个完整的DOM树形结构,同时,也是一个网页的全部内容。

所以,当在网页的开发过程或者网页的展示过程中需要从该完整的DOM树形结构中获取某个特定节点时,比如,需要获取图1中的“文本节点1”的属性特征时,传统的查询方式为,将基于该DOM树形结构一步步地去获取该特定节点。若当前节点为文档节点,则将先获取文档节点的子节点即元素节点1,再去获取元素节点1的子节点即元素节点4,再去获取元素节点4的子节点,也就获取到了用户需要的文本节点1。

明显地,上述基于DOM树形结构的关联逻辑去获取当前需要的特定节点的属性特征的方式极其繁琐,需要一步步地去获取树形结构中呈现关联关系的各节点,基于该关联关系最终才能查询到真正需要的特定节点,这也是直接应用DOM树形结构来查询节点的原始查询方式。

但是,该原始查询方式在节点的查询效果上极其受限,这是因为,不同的节点在DOM树形结构中所处的位置不同,而上述基于文档节点来查询到文本节点1的查询路径可简记为“文档节点→元素节点1→元素节点4→文本节点1”,该查询路径仅适用于在如图1所示的这个DOM树形结构中由文档节点查询到文本节点1,若由于开发需求,DOM树形结构出现变化,换言之,在下次进行节点查询时不再查询文本节点1而查询文本节点2,那么,上述查询路径将不再适用。这对于开发人员来说,需要再次进行新的节点查询路径的编写,不然,无法确定当前需要查找到的正确节点位置。

所以可认为,现有的节点查询方式存在可复用性较差的技术问题。

上述内容仅用于辅助理解本发明的技术方案,并不代表承认上述内容是现有技术。



技术实现要素:

本发明的主要目的在于提供基于DOM的节点查找方法、设备、存储介质及装置,旨在解决现有的节点查询方式存在的可复用性较差的技术问题。

为实现上述目的,本发明提供一种基于DOM的节点查找方法,所述基于DOM的节点查找方法包括以下步骤:

在检测到节点查询指令时,从所述节点查询指令中提取目标节点标识,所述目标节点标识为目标节点对象的节点标识;

通过调用预设节点查询函数在预设DOM树形结构中查找与所述目标节点标识对应的节点对象;

将查找到的与所述目标节点标识对应的节点对象认定为所述目标节点对象,并获取所述目标节点对象的属性特征,以实现根据所述预设节点查询函数确定所述目标节点对象。

优选地,所述在检测到节点查询指令时,从所述节点查询指令中提取目标节点标识,包括:

在检测到节点查询指令时,从所述节点查询指令中提取当前节点对象与目标节点标识;

所述通过调用预设节点查询函数在预设DOM树形结构中查找与所述目标节点标识对应的节点对象,包括:

通过调用预设节点查询函数以根据所述当前节点对象在预设DOM树形结构中查询相邻的下一节点对象;

将所述下一节点对象的节点标识与所述目标节点标识进行匹配;

所述将查找到的与所述目标节点标识对应的节点对象认定为所述目标节点对象,并获取所述目标节点对象的属性特征,以实现根据所述预设节点查询函数确定所述目标节点对象,包括:

在所述下一节点对象的节点标识与所述目标节点标识匹配成功时,将节点标识匹配成功的下一节点对象认定为所述目标节点对象,并获取所述目标节点对象的属性特征,以实现根据所述预设节点查询函数确定所述目标节点对象。

优选地,所述将所述下一节点对象的节点标识与所述目标节点标识进行匹配之后,所述基于DOM的节点查找方法还包括:

在所述下一节点对象的节点标识与所述目标节点标识匹配不成功时,将所述下一节点对象作为新的当前节点对象,返回执行通过调用所述预设节点查询函数以根据新的当前节点对象在所述预设DOM树形结构中查询相邻的新的下一节点对象,直至在新的下一节点对象的节点标识与所述目标节点标识匹配成功时,将新的下一节点对象认定为所述目标节点对象。

优选地,所述在检测到节点查询指令时,从所述节点查询指令中提取当前节点对象与目标节点标识之后,所述基于DOM的节点查找方法还包括:

将所述目标节点标识与各历史节点标识进行匹配;

在所述目标节点标识与各历史节点标识匹配成功时,将与所述目标节点标识匹配成功的历史节点标识作为第一待查询节点标识;

根据所述第一待查询节点标识在预设映射关系中查询对应的第一历史路径信息,所述预设映射关系中包括各历史节点标识与历史路径信息的对应关系,所述历史路径信息包括在所述预设DOM树形结构中自所述当前节点对象至与所述历史节点标识对应的节点对象中经过的所有节点对象;

所述通过调用预设节点查询函数以根据所述当前节点对象在预设DOM树形结构中查询相邻的下一节点对象,包括:

根据所述当前节点对象在所述第一历史路径信息中查询相邻的下一节点对象。

优选地,所述将所述目标节点标识与各历史节点标识进行匹配,包括:

获取所述目标节点标识与各历史节点标识之间的标识相似度;

将各标识相似度按照数值大小的次序进行排序,并按照排序结果依次将各标识相似度与预设相似度区间进行比较;

所述在所述目标节点标识与各历史节点标识匹配成功时,将与所述目标节点标识匹配成功的历史节点标识作为第一待查询节点标识,包括:

当存在标识相似度等于所述预设相似度区间的上限阈值时,将与所述上限阈值相等的标识相似度对应的历史节点标识作为第一待查询节点标识。

优选地,所述将各标识相似度按照数值大小的次序进行排序,并按照排序结果依次将各标识相似度与预设相似度区间进行比较之后,所述基于DOM的节点查找方法还包括:

当存在大于所述预设相似度区间的下限阈值且小于上限阈值的标识相似度时,将与大于所述下限阈值且小于所述上限阈值的标识相似度对应的历史节点标识作为第二待查询节点标识;

根据所述第二待查询节点标识在所述预设映射关系中查询对应的第二历史路径信息;

根据所述当前节点对象在所述第二历史路径信息中查询相邻的下一节点对象;

将所述下一节点对象的节点标识与所述第二待查询节点标识进行匹配;

在所述下一节点对象的节点标识与所述第二待查询节点标识匹配成功时,将与所述第二待查询节点标识对应的节点对象为新的当前节点对象;

根据新的当前节点对象在预设DOM树形结构中查询与新的当前节点对象相邻的下一节点对象;

将与新的当前节点对象相邻的下一节点对象的节点标识与所述目标节点标识进行匹配;

在与新的当前节点对象相邻的下一节点对象的节点标识与所述目标节点标识匹配成功时,确定与新的当前节点对象相邻的下一节点对象为所述目标节点对象,并获取所述目标节点对象的属性特征,以实现根据所述预设节点查询函数确定所述目标节点对象。

优选地,所述在检测到节点查询指令时,从所述节点查询指令中提取当前节点对象与目标节点标识,包括:

在检测到节点查询指令时,从所述节点查询指令中提取当前节点对象与目标节点数组,所述目标节点数组中包括各目标节点标识;

所述将所述下一节点对象的节点标识与所述目标节点标识进行匹配之前,所述基于DOM的节点查找方法还包括:

遍历所述目标节点数组,从所述目标节点数组中选取出目标节点标识。

此外,为实现上述目的,本发明还提出一种基于DOM的节点查找设备,所述基于DOM的节点查找设备包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的基于DOM的节点查找程序,所述基于DOM的节点查找程序配置为实现如上文所述的基于DOM的节点查找方法的步骤。

此外,为实现上述目的,本发明还提出一种存储介质,所述存储介质上存储有基于DOM的节点查找程序,所述基于DOM的节点查找程序被处理器执行时实现如上文所述的基于DOM的节点查找方法的步骤。

此外,为实现上述目的,本发明还提出一种基于DOM的节点查找装置,所述基于DOM的节点查找装置包括:标识提取模块、节点查询模块和特征提取模块;

所述标识提取模块,用于在检测到节点查询指令时,从所述节点查询指令中提取目标节点标识,所述目标节点标识为目标节点对象的节点标识;

所述节点查询模块,用于通过调用预设节点查询函数在预设DOM树形结构中查找与所述目标节点标识对应的节点对象;

所述特征提取模块,用于将查找到的与所述目标节点标识对应的节点对象认定为所述目标节点对象,并获取所述目标节点对象的属性特征,以实现根据所述预设节点查询函数确定所述目标节点对象。

在本发明中将基于预设节点查询函数来完成对于目标节点对象的查询操作,比之现有的节点查询方式需要以固定的DOM树形结构出发,开发人员基于该固定的DOM树形结构来预先确定好固定查询路径以实现固定位置的目标节点对象的查询操作,而本实施例由于将节点的查询过程交付于模块化的预设节点查询函数来完成,导致在实现查询过程时,预设节点查询函数将基于实时的DOM树形结构来实时地进行节点的检测与查询,使得开发人员无需不断地确定新的目标节点的查询路径,降低了重复开发的成本,进而解决了现有的节点查询方式存在的可复用性较差的技术问题。

附图说明

图1为DOM树形结构的示意图;

图2是本发明实施例方案涉及的硬件运行环境的基于DOM的节点查找设备结构示意图;

图3为本发明基于DOM的节点查找方法第一实施例的流程示意图;

图4为本发明基于DOM的节点查找方法第二实施例的流程示意图;

图5为本发明基于DOM的节点查找方法第三实施例的流程示意图;

图6为本发明基于DOM的节点查找方法第四实施例的流程示意图;

图7为本发明基于DOM的节点查找装置第一实施例的结构框图。

本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

参照图2,图2为本发明实施例方案涉及的硬件运行环境的基于DOM的节点查找设备结构示意图。

如图2所示,该基于DOM的节点查找设备可以包括:处理器1001,例如CPU,通信总线1002、用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display),可选用户接口1003还可以包括标准的有线接口、无线接口,对于用户接口1003的有线接口在本发明中可为USB接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。

本领域技术人员可以理解,图2中示出的结构并不构成对基于DOM的节点查找设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。

如图2所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及基于DOM的节点查找程序。

在图2所示的基于DOM的节点查找设备中,网络接口1004主要用于连接后台服务器,与所述后台服务器进行数据通信;用户接口1003主要用于连接外设;所述基于DOM的节点查找设备通过处理器1001调用存储器1005中存储的基于DOM的节点查找程序,并执行本发明实施例提供的基于DOM的节点查找方法。

基于上述硬件结构,提出本发明基于DOM的节点查找方法的实施例。

参照图3,图3为本发明基于DOM的节点查找方法第一实施例的流程示意图。

在第一实施例中,所述基于DOM的节点查找方法包括以下步骤:

步骤S10:在检测到节点查询指令时,从所述节点查询指令中提取目标节点标识,所述目标节点标识为目标节点对象的节点标识;

可以理解的是,本实施例的执行主体为基于DOM的节点查找设备,可简记为设备A。可参考图1,当设备A检测到包含元素节点5的节点标识的节点查询指令时,也就表明,设备A希望查询到的目标节点对象为元素节点5。其中,节点标识用于在各节点对象中唯一地标识特定的节点对象,而节点标识的表现形式可为节点名称(nodeName)。

步骤S20:通过调用预设节点查询函数在预设DOM树形结构中查找与所述目标节点标识对应的节点对象;

可以理解的是,考虑到现有的节点查询方式单纯且原始地只基于DOM树形结构来完成节点查询操作,明显地,查询方式过于原始且运行效率较低,为了简化成功查询到特定节点的查询过程并且增强查询过程的可复用性,进而提高节点查询的查询效率,可通过调用预设节点查询函数来完成节点的查询过程。

应当理解的是,由于将目标节点对象的查询过程抽象为一个预设节点查询函数完成的工作,从而导致查询过程并不依赖于固定的DOM树形结构、DOM树形结构中的固定节点位置以及固定节点对象,导致DOM树形结构可以任意变化并且并不影响本实施例正确地查找到正确的节点对象。这是因为,当调用预设节点函数后,预设节点函数将自动地基于当前状况的DOM树形结构完成节点对象的查询动作,比如,若需成功地查询到“元素节点5”,将自动地先判断文档节点的子节点“元素节点2”是否为“元素节点5”,当检测到“元素节点2”不为“元素节点5”,再自动地检测“元素节点2”的子节点是否为“元素节点5”,若为“元素节点5”则停止操作,若不为“元素节点5”则检测“元素节点2”的另一子节点“元素节点6”,直至查询到“元素节点5”,也就完成了对于目标节点对象的查询动作。故而,基于预设节点查询函数可以脱离于固定化的DOM树形结构的实际结构状态,成功地查询到目标节点对象,因为,本实施例中将基于DOM树形结构进行即时的节点自动判断与即时的节点自动查询,无需开发人员预先规定好查询路径。

步骤S30:将查找到的与所述目标节点标识对应的节点对象认定为所述目标节点对象,并获取所述目标节点对象的属性特征,以实现根据所述预设节点查询函数确定所述目标节点对象。

在具体实现中,当基于预设节点查询函数查询到节点标识与目标节点标识相同的节点对象后,可认为查询到的该节点对象即为本实施例欲查询的目标节点对象。在查询到目标节点对象后,则可获取该目标节点对象的属性特征,以便于展示网页内容。其中,目标节点对象的属性特征因节点对象的类型不同而特征内容不同,比如,若查询到的目标节点对象的节点类型为文本节点,则该文本节点的属性特征为该节点中包括的文本信息。

在本实施例中将基于预设节点查询函数来完成对于目标节点对象的查询操作,比之现有的节点查询方式需要以固定的DOM树形结构出发,开发人员基于该固定的DOM树形结构来预先确定好固定查询路径以实现固定位置的目标节点对象的查询操作,而本实施例由于将节点的查询过程交付于模块化的预设节点查询函数来完成,导致在实现查询过程时,预设节点查询函数将基于实时的DOM树形结构来实时地进行节点的检测与查询,使得开发人员无需不断地自主确定新的目标节点的新的查询路径,降低了重复开发的成本,进而解决了现有的节点查询方式存在的可复用性较差的技术问题。

参照图4,图4为本发明基于DOM的节点查找方法第二实施例的流程示意图,基于上述图3所示的第一实施例,提出本发明基于DOM的节点查找方法的第二实施例。

在第二实施例中,所述步骤S10,可以包括:

步骤S10':在检测到节点查询指令时,从所述节点查询指令中提取当前节点对象与目标节点标识;

可以理解的是,考虑到本发明基于DOM的节点查找方法第一实施例中可基于预设节点查询函数来进行即时的节点自动判断与即时的节点自动查询,而本实施例中将给出预设节点查询函数的一种实现方式。当然,本实施例并限制预设节点查询函数的实施方案仅为第二实施例描述的技术方案。

在具体实现中,比如,若执行节点查询动作的DOM树形结构如图1,当前节点对象为“文档节点”,从节点查询指令中提取出的目标节点标识为“元素节点6”。

所述步骤S20,可以包括:

步骤S201:通过调用预设节点查询函数以根据所述当前节点对象在预设DOM树形结构中查询相邻的下一节点对象;

应当理解的是,对于预设节点查询函数的实现方式,可先查询与当前节点对象“文档节点”相邻的下一节点对象,就图1而言,“文档节点”存在两个子节点分别为“元素节点1”与“元素节点2”,而“元素节点2”同时也存在两个子节点分别为“元素节点5”与“元素节点6”。明显地,当预设DOM树形结构较为复杂时,常常无法通过一步查询就直接得到节点标识为目标节点标识的节点对象,往往需要多次连续的查询且不断的判断,所以,需要在查询到陌生的下一节点对象时需要对该节点对象进行节点标识的判断。

步骤S202:将所述下一节点对象的节点标识与所述目标节点标识进行匹配;

所述步骤S30,可以包括:

步骤S30':在所述下一节点对象的节点标识与所述目标节点标识匹配成功时,将节点标识匹配成功的下一节点对象认定为所述目标节点对象,并获取所述目标节点对象的属性特征,以实现根据所述预设节点查询函数确定所述目标节点对象。

在具体实现中,比如,“文档节点”存在两个子节点分别为“元素节点1”与“元素节点2”,可先查询一级子节点“元素节点1”,由于节点标识不为“元素节点6”,可再查询另一个一级子节点“元素节点2”,由于节点标识也不为“元素节点6”,在完成对于一级子节点的查询判断后,可转入二级子节点进行判断,以此类推,直至查询到二级子节点“元素节点6”,也就完成了对于目标节点对象的查询。

可以理解的是,考虑到预设DOM树形结构中存在多种节点关系,包括父(parent)子(child)关系,同胞(sibling)关系等,所以,在定义预设DOM树形结构中的“相邻”关系时存在上述的多种节点关系。

此外,对于节点的查询次序除了上述的按照节点级别依次查询节点的查询次序外,也可按照深度优先的原则进行节点的查询,比如,可先尝试“元素节点1→元素节点3”的查询路径,当该查询路径中的各节点均不为“元素节点6”时,再尝试“元素节点1→元素节点4→文本节点1”的查询路径,其次再尝试“元素节点2→元素节点5→文本节点2”以及“元素节点2→元素节点6”的查询路径,依次类推。

进一步地,所述步骤S202之后,所述基于DOM的节点查找方法还可以包括:在所述下一节点对象的节点标识与所述目标节点标识匹配不成功时,将所述下一节点对象作为新的当前节点对象,返回执行通过调用所述预设节点查询函数以根据新的当前节点对象在所述预设DOM树形结构中查询相邻的新的下一节点对象,直至在新的下一节点对象的节点标识与所述目标节点标识匹配成功时,将新的下一节点对象认定为所述目标节点对象。

在具体实现中,对于匹配失败的具体应对方案可为,比如,当查询到“文档节点”的下一节点对象的节点标识“元素节点2”不为“元素节点6”时,将当前节点对象重新认定为“元素节点2”,并基于重新认定的当前节点对象“元素节点2”进行下一节点对象的查询,直至查询到匹配成功的目标节点对象。

当然,上述匹配失败的应对方案仅在描述一条连续路径上的节点匹配,若正在检测判断的连续查询路径“元素节点1→元素节点4→文本节点1”中不存在需要的“元素节点6”,则可尝试其他的查询路径,以最终匹配到需要的“元素节点6”。

在本实施例中通过详细地阐述了调用预设节点查询函数来完成目标节点对象的查询操作,并且,补充了当匹配不成功时如何继续查询操作的具体方案,进一步地提高了节点查询的查询效率。同时,也成功地避免了在当前的查询路径中不存在目标节点对象时并继续完成目标节点的查询操作。

参照图5,图5为本发明基于DOM的节点查找方法第三实施例的流程示意图,基于上述图4所示的第二实施例,提出本发明基于DOM的节点查找方法的第三实施例。

在第三实施例中,所述步骤S10'之后,所述基于DOM的节点查找方法还可以包括:

步骤S101:将所述目标节点标识与各历史节点标识进行匹配;

可以理解的是,为了进一步地加快查询目标节点对象的查询效率,并且,考虑到在网页的展示过程、网页的开发迭代过程中存在着频繁的节点内容修正以及频繁的节点访问操作,可通过预先存储历史节点标识来提高查找效率,并且,可以避免掉在节点查询过程中对于错误路径的检测。

在具体实现中,可参考图1,比如,若当前节点对象为文档节点,目标节点标识为“元素节点5”,则对于预设DOM树形结构而言正确的查询路径应该为“文档节点→元素节点2→元素节点5”,但是,考虑到在实际查询“元素节点5”之前,是无法直接根据DOM树形结构确定正确的查询路径的,如此,则需要在DOM树形结构中不断地检测与判断哪个节点为“元素节点5”,如此带来的查询效率较为低下。为了提高查询效率,在第一次成功查询到“元素节点5”后,可将“元素节点5”保存为历史节点标识,并且额外保存“文档节点→元素节点2→元素节点5”这一历史路径信息,并建立历史节点标识与历史路径信息的对应关系,将该对应关系添加入预设映射关系中,以便于后续的应用。

应当理解的是,当再次查询“元素节点5”时,可先判断该“元素节点5”是否为各历史节点标识之一。

步骤S102:在所述目标节点标识与各历史节点标识匹配成功时,将与所述目标节点标识匹配成功的历史节点标识作为第一待查询节点标识;

步骤S103:根据所述第一待查询节点标识在预设映射关系中查询对应的第一历史路径信息,所述预设映射关系中包括各历史节点标识与历史路径信息的对应关系,所述历史路径信息包括在所述预设DOM树形结构中自所述当前节点对象至与所述历史节点标识对应的节点对象中经过的所有节点对象;

可以理解的是,当成功与各历史节点标识匹配时,则表明曾经成功查询过该“元素节点5”并已在初次查询成功后将该节点对象的节点标识列为历史节点标识,则可基于该“元素节点5”的节点标识在预设映射关系中查询对应的第一历史路径信息“文档节点→元素节点2→元素节点5”。

进一步地,所述步骤S201,还可以包括:

步骤S201':根据所述当前节点对象在所述第一历史路径信息中查询相邻的下一节点对象。

应当理解的是,在获取到第一历史路径信息“文档节点→元素节点2→元素节点5”后,当存在查询“元素节点5”的节点对象的查询需求时,就不必直接从预设DOM树形结构中无方向性地去一一检测并进行节点标识的判断,可以直接根据第一历史路径信息“文档节点→元素节点2→元素节点5”去查询该路径中的下一节点对象“元素节点2”,以最终查询到“元素节点5”。通过该查询方式,可以尽量地降低查询次数,提高查询到目标节点对象的查询速度。

在本实施例中通过在完成对于节点对象的初次查询后,可对应地保存初次查询的节点对象的节点标识与历史路径信息入预设映射关系,使得在后续对该节点对象进行访问时,可直接调用该历史路径信息完成节点的快速查询,提高了节点查询的速度,降低了对于错误路径的次数。并且,随着查询的次数以及查询的节点变多,整体的查询速度也将越来越快。

参照图6,图6为本发明基于DOM的节点查找方法第四实施例的流程示意图,基于上述图5所示的第三实施例,提出本发明基于DOM的节点查找方法的第四实施例。

在第四实施例中,所述步骤S101,可以包括:

步骤S1011:获取所述目标节点标识与各历史节点标识之间的标识相似度;

可以理解的是,考虑到本发明基于DOM的节点查找方法第三实施例中将存储历史节点标识与历史路径信息的对应关系,在查询节点时基于该对应关系来完成对于目标节点对象的确定,可明显地提高节点查询的速度。基于此,考虑到开发人员在开发过程中以及节点标准在被制定时对于节点标识的规定存在一定的倾向性,比如,可能将文本内容相近的文本置于相邻的文本节点中,可能将相邻的节点标识规定为相似的名称,或者,可能将节点类型相同的节点置为相邻的节点,对此现象,可规定标识相似度来提高目标节点标识与各历史节点标识之一匹配成功的匹配速度。

在具体实现中,所述标识相似度为节点名称之间的相似度。

当然,所述标识相似度也可同时兼顾节点名称相似度与节点类型相似度,则标识相似度可为节点名称相似度与节点类型相似度的加权平均值。

步骤S1012:将各标识相似度按照数值大小的次序进行排序,并按照排序结果依次将各标识相似度与预设相似度区间进行比较;

在具体实现中,比如,若目标节点对象的节点标识为“file1”,而历史节点标识为包括节点1、节点2以及节点3,节点1的节点标识为“file1”,节点2的节点标识为“file2”以及节点3的节点标识为“picture1”。明显地,标识相似度按照数值大小的次序进行排序,分别为节点1的100%、节点2的80%(4/5=0.8)以及节点3的20%(1/5=0.2)。

进一步地,所述步骤S102,可以包括:

步骤S102':当存在标识相似度等于所述预设相似度区间的上限阈值时,将与所述上限阈值相等的标识相似度对应的历史节点标识作为第一待查询节点标识。

可以理解的是,为了提高目标节点标识与各历史节点标识进行匹配的匹配速度,可对待匹配的历史节点标识进行筛选,筛选的依据则为标识相似度。比如,可预先设定预设相似度区域以筛选历史节点标识,预设相似度区间可为[0.5,1]。其中,预设相似度区间的上限阈值为1,下限阈值为0.5,上限阈值为1表明历史节点标识中存在该目标节点标识,则可直接将该标识相似度为1的历史节点标识作为第一待查询节点标识进行后续的节点查询操作。

进一步地,所述步骤S1012之后,所述基于DOM的节点查找方法还可以包括:当存在大于所述预设相似度区间的下限阈值且小于上限阈值的标识相似度时,将与大于所述下限阈值且小于所述上限阈值的标识相似度对应的历史节点标识作为第二待查询节点标识;根据所述第二待查询节点标识在所述预设映射关系中查询对应的第二历史路径信息;根据所述当前节点对象在所述第二历史路径信息中查询相邻的下一节点对象;将所述下一节点对象的节点标识与所述第二待查询节点标识进行匹配;在所述下一节点对象的节点标识与所述第二待查询节点标识匹配成功时,将与所述第二待查询节点标识对应的节点对象为新的当前节点对象;根据新的当前节点对象在预设DOM树形结构中查询与新的当前节点对象相邻的下一节点对象;将与新的当前节点对象相邻的下一节点对象的节点标识与所述目标节点标识进行匹配;在与新的当前节点对象相邻的下一节点对象的节点标识与所述目标节点标识匹配成功时,确定与新的当前节点对象相邻的下一节点对象为所述目标节点对象,并获取所述目标节点对象的属性特征,以实现根据所述预设节点查询函数确定所述目标节点对象。

在具体实现中,可将标识相似度与预设相似度区间的比较结果分为三类,第一类为标识相似度等于预设相似度区间的上限阈值、第二类为标识相似度大于等于所述预设相似度区间的下限阈值且小于上限阈值以及第三类为标识相似度小于所述预设相似度区间。对于第一类,本实施例的上述内容已表明,不作赘述;对于第三类,由于历史节点标识与目标节点标识存在太大差异,不具有较好的参考性,可以不参考已有的历史路径信息,直接按照预设DOM树形结构进行自动的节点检测与节点判断。

可以理解的是,对于第二类,本实施例也给出了进一步地提高节点查询速度的查询方式,比如,若目标节点对象的节点标识为“file1”,而历史节点标识为包括节点1与节点2,节点1的节点标识为“file2”以及节点2的节点标识为“picture1”。明显地,标识相似度按照数值大小的次序进行排序,分别为节点1的80%(4/5=0.8)以及节点2的20%(1/5=0.2)。虽然,节点1“file2”与目标节点对象的节点标识“file1”不同,但是,由于节点标识的相似度较高,考虑到节点标识在标识标准的规定以及开发人员的开发过程中存在取名相似的倾向性,可认为节点1“file2”与目标节点对象“file1”的节点位置在预设DOM树形结构中可能位置较近。故而,可先将节点1“file2”作为第二待查询节点标识,并成功地查询到节点1“file2”的节点对象,将节点1“file2”的节点对象作为新的当前节点对象。

应当理解的是,在将节点1“file2”的节点对象作为新的当前节点对象后,可基于该新的当前节点对象在预设DOM树形结构中查询相邻的节点,由于以新的当前节点对象出发进行存在相邻关系的节点的查询,缩小了查询范围,进一步地提高查询速度。

进一步地,所述在检测到节点查询指令时,从所述节点查询指令中提取当前节点对象与目标节点标识,包括:在检测到节点查询指令时,从所述节点查询指令中提取当前节点对象与目标节点数组,所述目标节点数组中包括各目标节点标识;

所述将所述下一节点对象的节点标识与所述目标节点标识进行匹配之前,所述基于DOM的节点查找方法还包括:遍历所述目标节点数组,从所述目标节点数组中选取出目标节点标识。

应当理解的是,在目标节点对象的查询过程中,为了加快查找速度,不必一次只输入一个目标节点标识来进行目标节点对象的查询,可一次输入多个目标节点标识。具体的实施方式可为,将多个目标节点标识填入目标节点数组中,并自动遍历该目标节点数组,以逐步地完成数组中各个节点标识的查询。

当然,也可在节点查询指令中添加目标节点字符串来进行节点对象的查询,具体而言,可先将目标节点字符串中的各节点标识隔离开,并转化为目标节点数组,进而可依据目标节点数组的实施方式来完成对于数组中各个节点标识的查询。

在本实施例中通过标识相似度来排列历史节点标识,可以提高匹配到与目标节点标识匹配成功的历史节点标识的匹配速度,从而可进一步地提高在预设DOM树形结构中成功查询到目标节点的查询速度。

此外,本发明实施例还提出一种存储介质,所述存储介质上存储有基于DOM的节点查找程序,所述基于DOM的节点查找程序被处理器执行时实现如上文所述的基于DOM的节点查找方法的步骤。

此外,参照图7,本发明实施例还提出一种基于DOM的节点查找装置,所述基于DOM的节点查找装置包括:标识提取模块10、节点查询模块20和特征提取模块30;

所述标识提取模块10,用于在检测到节点查询指令时,从所述节点查询指令中提取目标节点标识,所述目标节点标识为目标节点对象的节点标识;

所述节点查询模块20,用于通过调用预设节点查询函数在预设DOM树形结构中查找与所述目标节点标识对应的节点对象;

所述特征提取模块30,用于将查找到的与所述目标节点标识对应的节点对象认定为所述目标节点对象,并获取所述目标节点对象的属性特征,以实现根据所述预设节点查询函数确定所述目标节点对象。

在本实施例中将基于预设节点查询函数来完成对于目标节点对象的查询操作,比之现有的节点查询方式需要以固定的DOM树形结构出发,开发人员基于该固定的DOM树形结构来预先确定好固定查询路径以实现固定位置的目标节点对象的查询操作,而本实施例由于将节点的查询过程交付于模块化的预设节点查询函数来完成,导致在实现查询过程时,预设节点查询函数将基于实时的DOM树形结构来实时地进行节点的检测与查询,使得开发人员无需不断地确定新的目标节点的新的查询路径,降低了重复开发的成本,进而解决了现有的节点查询方式存在的可复用性较差的技术问题。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。词语第一、第二、以及第三等的使用不表示任何顺序,可将这些词语解释为名称。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。

以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

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