针对HTMLElement的CSS选择器最短路径反查算法

文档序号:9375329阅读:370来源:国知局
针对HTMLElement的CSS选择器最短路径反查算法
【技术领域】
[0001]本发明属于网络前端开发领域,尤其是涉及一种针对HTMLElement的CSS选择器最短路径反查算法。
【背景技术】
[0002]XPath即为XML路径语言,它是一种用来确定XML (标准通用标记语言的子集)文档中某部分位置的语言。XPath基于XML的树状结构,提供在数据结构树中找寻节点的能力。在现有技术XPath表达节点路径中,使用者不得不接受一套日常并不常用的语法规范。该技术是针对XML的,用于对HTML文档的节点查询的实践中,表达结果过于冗长。在HTML中使用XPath语法对节点路径进行反查,在当下和也是一项效率低下的任务。当代浏览器中JavaScript解释器已经能内置CSS查询器,所以用CSSPath来代替XPath既能提高软件的开发效率、又能提高软件的运行效率。

【发明内容】

[0003]有鉴于此,本发明旨在提出一种针对HTMLElement的CSS选择器最短路径反查算法,以提高节点的查询效率。
[0004]为达到上述目的,本发明的技术方案是这样实现的:
[0005]针对HTMLElement的CSS选择器最短路径反查算法,设定节点D为当前节点,算法包括
[0006]S1.根据当前节点的属性值id或者class,确定当前节点的路径,若该节点的路径唯一指向当前节点,则结束算法,若不唯一指向当前节点,则设定节点D的路径为路径S,进入步骤S2 ;
[0007]S2.循环将当前节点的父节点路径叠加在路径S上,得到新的节点D的路径,若该D节点路径唯一指向节点D,则结束算法,若不唯一指向节点D,则进入步骤S3 ;
[0008]S3.在可以指向节点D的所有路径中选择出其中最短的一个路径SP,并查找出该路径SP指向的所有节点的集合A,在所述集合A中找到节点D的位置,作为节点D的索引I,路径SP加索引I作为节点D的路径。
[0009]进一步的,所述步骤SI包括
[0010]Sll.判断当前节点是否有专属于它的id,若有,贝Ij当前节点路径为id,算法结束,若无,则进入步骤S12。
[0011]S12.判断当前节点的当前节点路径加class能否唯一指向当前节点,若能,则当前节点路径为id加class,算法结束,若不能,则进入步骤S2。
[0012]进一步的,所述步骤Sll包括
[0013]S111.判断当前节点是否有id,若有,则当前节点路径为id,进入步骤SI 12,若无,则进入步骤S12 ;
[0014]S112.判断当前节点路径是否唯一指向当前节点,若是,则算法结束,若否,则进入步骤S12。
[0015]进一步的,所述步骤S12包括
[0016]S121.判断当前节点是否有class,若有,则当前节点路径加上class成为新的节点路径,进入步骤S122,若无,则设定节点D的路径为路径S,进入步骤S2 ;
[0017]S122.判断当前节点路径是否唯一指向当前节点,若是,则算法结束,若否,则设定节点D的路径为路径S,进入步骤S2。
[0018]进一步的,所述步骤S2包括
[0019]S21.将当前节点的父节点设为新的当前节点,查找当前节点的路径,设定新的路径S为当前节点路径加路径S,进入步骤S22 ;
[0020]S22.判断路径S是否唯一指向节点D,若是,则结束算法,若否,则进入步骤S23 ;
[0021]S23.判断当前节点是否为根节点,若是,则进入步骤S3 ;若否,则进入步骤S21。
[0022]进一步的,所述步骤S21包括
[0023]S211.将当前节点的父节点设为新的当前节点,判断当前节点是否有id,若有,则当前节点路径为id,进入步骤S212,若无,则进入步骤S213 ;
[0024]S212.判断当前节点路径是否唯一指向当前节点,若是,贝Ij进入步骤S214,若否,则进入步骤S213 ;
[0025]S213.判断当前节点是否有class,若有,则当前节点路径加上class成为新的节点路径,进入步骤S214,若无,进入步骤S214 ;
[0026]S214.设定新的路径S为当前节点路径加路径S,进入步骤S22。
[0027]进一步的,判断节点路径是否唯一指向节点的方法为查找出节点路径指向的所有的节点集合,若该集合的长度为1,则可认定节点路径唯一指向该节点。
[0028]相对于现有技术,本发明所述的针对HTMLElement的CSS选择器最短路径反查算法具有以下优势:
[0029]本发明所述的针对HTMLElement的CSS选择器最短路径反查算法解决了获得该节点优化和扩展的最短CSS查询路径(CSSPath)的问题,既能提高软件的开发效率、又能提高软件的运行效率。
【附图说明】
[0030]构成本发明的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
[0031]图1为本发明实施例所述的步骤SI的流程图;
[0032]图2为本发明实施例所述的步骤S2的流程图。
【具体实施方式】
[0033]需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
[0034]在编辑测试代码时,需要通过捕捉某一确定元素的css路径从而选中该元素,并要求该元素是唯一的。查找节点css路径的方法为
[0035]如图1所示,S111.判断当前节点是否有id,若有,则当前节点路径为id,进入步骤SI 12,若无,则进入步骤S12 ;这一步先行检测节点是否具有id
[0036]S112.判断当前节点路径是否唯一指向当前节点,若是,则算法结束,若否,则进入步骤S12。若具有只属于节点的id,则找到最短路径,算法可以结束,若没有id或者id不唯一指向该节点,就需要进入下一个步骤,检查节点的id。
[0037]S121.判断当前节点是否有class,若有,则当前节点路径加上class成为新的节点路径,进入步骤S122,若无,则设定节点D的路径为路径S,进入步骤S2 ;对节点的class属性就行判断,作为进一步限定路径的属性值。
[0038]S122.判断当前节点路径是否唯一指向当前节点,若是,则算法结束,若否,则设定节点D的路径为路径
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1