1. 程式人生 > 實用技巧 >從樹形 html 結構中獲取文字

從樹形 html 結構中獲取文字

getXpath = function(dom) {  
  dom = $(dom).get(0);  
  var path = "";  
  for (; dom && dom.nodeType == 1; dom = dom.parentNode) {  
    var index = 1;  
    for (var sib = dom.previousSibling; sib; sib = sib.previousSibling) {  
      if (sib.nodeType == 1 && sib.tagName == dom.tagName)  
        index++;  
      }  
    var
xname = dom.tagName.toLowerCase(); if (dom.id) { xname += "[@id=\"" + dom.id + "\"]"; } else { if (index > 0) xname += "[" + index + "]"; } path = "/" + xname + path; } path = path.replace("html[1]/body[1]/","html/body/"); return path; }; // ...
o = [] $(`.sitemapPageName`).each((index, item) => { const parents = $(item).parents(`ul`).parents(`.sitemapExpandableNode`).eq(0).find(`>div .sitemapPageName`) const xpath = getXpath(item) o.push({ name: $(item).text(), parent: parents ? $(parents).text() : undefined
, xpath, parentXpath: parents ? getXpath(parents[0]) : undefined, // s, }) }) o2 = o.map(item => { return { ...item, fullName: getName(item) } }) function getName(item){ let name = item.name if(item.parent) { const parentName = getName(o.find(item2 => item2.xpath === item.parentXpath)) name = `${parentName} -> ${name}` } return name } console.log(o) console.log(o2) str = o2.map(item => item.fullName).join(`\r\n`) console.log(str) /** 融資管理 融資管理 -> 融資訂單列表 -> 已完成 融資管理 -> 融資訂單列表 -> 待初審-被駁回 融資管理 -> 融資訂單列表 -> 待終審-被駁回 融資管理 -> 用信明細 融資管理 -> 放款查詢 結算管理 結算管理 -> 月息對賬 結算管理 -> 月息對賬 -> 待確認 結算管理 -> 月息對賬 -> 待確認 -> 確認賬單 財務管理 財務管理 -> 銀行賬戶管理 財務管理 -> 銀行賬戶管理 -> 提現 財務管理 -> 對賬管理 財務管理 -> 對賬管理 -> 放款對賬 **/