国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      針對HTMLElement的CSS選擇器最短路徑反查算法

      文檔序號:9375329閱讀:460來源:國知局
      針對HTMLElement的CSS選擇器最短路徑反查算法
      【技術領域】
      [0001]本發(fā)明屬于網(wǎng)絡前端開發(fā)領域,尤其是涉及一種針對HTMLElement的CSS選擇器最短路徑反查算法。
      【背景技術】
      [0002]XPath即為XML路徑語言,它是一種用來確定XML (標準通用標記語言的子集)文檔中某部分位置的語言。XPath基于XML的樹狀結構,提供在數(shù)據(jù)結構樹中找尋節(jié)點的能力。在現(xiàn)有技術XPath表達節(jié)點路徑中,使用者不得不接受一套日常并不常用的語法規(guī)范。該技術是針對XML的,用于對HTML文檔的節(jié)點查詢的實踐中,表達結果過于冗長。在HTML中使用XPath語法對節(jié)點路徑進行反查,在當下和也是一項效率低下的任務。當代瀏覽器中JavaScript解釋器已經(jīng)能內(nèi)置CSS查詢器,所以用CSSPath來代替XPath既能提高軟件的開發(fā)效率、又能提高軟件的運行效率。

      【發(fā)明內(nèi)容】

      [0003]有鑒于此,本發(fā)明旨在提出一種針對HTMLElement的CSS選擇器最短路徑反查算法,以提高節(jié)點的查詢效率。
      [0004]為達到上述目的,本發(fā)明的技術方案是這樣實現(xiàn)的:
      [0005]針對HTMLElement的CSS選擇器最短路徑反查算法,設定節(jié)點D為當前節(jié)點,算法包括
      [0006]S1.根據(jù)當前節(jié)點的屬性值id或者class,確定當前節(jié)點的路徑,若該節(jié)點的路徑唯一指向當前節(jié)點,則結束算法,若不唯一指向當前節(jié)點,則設定節(jié)點D的路徑為路徑S,進入步驟S2 ;
      [0007]S2.循環(huán)將當前節(jié)點的父節(jié)點路徑疊加在路徑S上,得到新的節(jié)點D的路徑,若該D節(jié)點路徑唯一指向節(jié)點D,則結束算法,若不唯一指向節(jié)點D,則進入步驟S3 ;
      [0008]S3.在可以指向節(jié)點D的所有路徑中選擇出其中最短的一個路徑SP,并查找出該路徑SP指向的所有節(jié)點的集合A,在所述集合A中找到節(jié)點D的位置,作為節(jié)點D的索引I,路徑SP加索引I作為節(jié)點D的路徑。
      [0009]進一步的,所述步驟SI包括
      [0010]Sll.判斷當前節(jié)點是否有專屬于它的id,若有,貝Ij當前節(jié)點路徑為id,算法結束,若無,則進入步驟S12。
      [0011]S12.判斷當前節(jié)點的當前節(jié)點路徑加class能否唯一指向當前節(jié)點,若能,則當前節(jié)點路徑為id加class,算法結束,若不能,則進入步驟S2。
      [0012]進一步的,所述步驟Sll包括
      [0013]S111.判斷當前節(jié)點是否有id,若有,則當前節(jié)點路徑為id,進入步驟SI 12,若無,則進入步驟S12 ;
      [0014]S112.判斷當前節(jié)點路徑是否唯一指向當前節(jié)點,若是,則算法結束,若否,則進入步驟S12。
      [0015]進一步的,所述步驟S12包括
      [0016]S121.判斷當前節(jié)點是否有class,若有,則當前節(jié)點路徑加上class成為新的節(jié)點路徑,進入步驟S122,若無,則設定節(jié)點D的路徑為路徑S,進入步驟S2 ;
      [0017]S122.判斷當前節(jié)點路徑是否唯一指向當前節(jié)點,若是,則算法結束,若否,則設定節(jié)點D的路徑為路徑S,進入步驟S2。
      [0018]進一步的,所述步驟S2包括
      [0019]S21.將當前節(jié)點的父節(jié)點設為新的當前節(jié)點,查找當前節(jié)點的路徑,設定新的路徑S為當前節(jié)點路徑加路徑S,進入步驟S22 ;
      [0020]S22.判斷路徑S是否唯一指向節(jié)點D,若是,則結束算法,若否,則進入步驟S23 ;
      [0021]S23.判斷當前節(jié)點是否為根節(jié)點,若是,則進入步驟S3 ;若否,則進入步驟S21。
      [0022]進一步的,所述步驟S21包括
      [0023]S211.將當前節(jié)點的父節(jié)點設為新的當前節(jié)點,判斷當前節(jié)點是否有id,若有,則當前節(jié)點路徑為id,進入步驟S212,若無,則進入步驟S213 ;
      [0024]S212.判斷當前節(jié)點路徑是否唯一指向當前節(jié)點,若是,貝Ij進入步驟S214,若否,則進入步驟S213 ;
      [0025]S213.判斷當前節(jié)點是否有class,若有,則當前節(jié)點路徑加上class成為新的節(jié)點路徑,進入步驟S214,若無,進入步驟S214 ;
      [0026]S214.設定新的路徑S為當前節(jié)點路徑加路徑S,進入步驟S22。
      [0027]進一步的,判斷節(jié)點路徑是否唯一指向節(jié)點的方法為查找出節(jié)點路徑指向的所有的節(jié)點集合,若該集合的長度為1,則可認定節(jié)點路徑唯一指向該節(jié)點。
      [0028]相對于現(xiàn)有技術,本發(fā)明所述的針對HTMLElement的CSS選擇器最短路徑反查算法具有以下優(yōu)勢:
      [0029]本發(fā)明所述的針對HTMLElement的CSS選擇器最短路徑反查算法解決了獲得該節(jié)點優(yōu)化和擴展的最短CSS查詢路徑(CSSPath)的問題,既能提高軟件的開發(fā)效率、又能提高軟件的運行效率。
      【附圖說明】
      [0030]構成本發(fā)明的一部分的附圖用來提供對本發(fā)明的進一步理解,本發(fā)明的示意性實施例及其說明用于解釋本發(fā)明,并不構成對本發(fā)明的不當限定。在附圖中:
      [0031]圖1為本發(fā)明實施例所述的步驟SI的流程圖;
      [0032]圖2為本發(fā)明實施例所述的步驟S2的流程圖。
      【具體實施方式】
      [0033]需要說明的是,在不沖突的情況下,本發(fā)明中的實施例及實施例中的特征可以相互組合。
      [0034]在編輯測試代碼時,需要通過捕捉某一確定元素的css路徑從而選中該元素,并要求該元素是唯一的。查找節(jié)點css路徑的方法為
      [0035]如圖1所示,S111.判斷當前節(jié)點是否有id,若有,則當前節(jié)點路徑為id,進入步驟SI 12,若無,則進入步驟S12 ;這一步先行檢測節(jié)點是否具有id
      [0036]S112.判斷當前節(jié)點路徑是否唯一指向當前節(jié)點,若是,則算法結束,若否,則進入步驟S12。若具有只屬于節(jié)點的id,則找到最短路徑,算法可以結束,若沒有id或者id不唯一指向該節(jié)點,就需要進入下一個步驟,檢查節(jié)點的id。
      [0037]S121.判斷當前節(jié)點是否有class,若有,則當前節(jié)點路徑加上class成為新的節(jié)點路徑,進入步驟S122,若無,則設定節(jié)點D的路徑為路徑S,進入步驟S2 ;對節(jié)點的class屬性就行判斷,作為進一步限定路徑的屬性值。
      [0038]S122.判斷當前節(jié)點路徑是否唯一指向當前節(jié)點,若是,則算法結束,若否,則設定節(jié)點D的路徑為路徑
      當前第1頁1 2 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1