• 从树形 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(`
    `)
    
    console.log(str)
    
    /**
    融资管理
    融资管理 -> 融资订单列表 -> 已完成
    融资管理 -> 融资订单列表 -> 待初审-被驳回
    融资管理 -> 融资订单列表 -> 待终审-被驳回
    融资管理 -> 用信明细
    融资管理 -> 放款查询
    结算管理
    结算管理 -> 月息对账
    结算管理 -> 月息对账 -> 待确认
    结算管理 -> 月息对账 -> 待确认 -> 确认账单
    财务管理
    财务管理 -> 银行账户管理
    财务管理 -> 银行账户管理 -> 提现
    财务管理 -> 对账管理
    财务管理 -> 对账管理 -> 放款对账
    **/
    
  • 相关阅读:
    杭电 2546 饭卡 (01背包问题)
    杭电2602 Bone Collector
    01背包问题的详细概述
    杭电1003 最大子串(第二次AC) 当作DP的训练吧
    杭电1087 Super Jumping! Jumping! Jumping!(初见DP)
    Virtualenv虚拟环境的创建、激活、及退出
    修改maven本地仓库路径
    PPT如何去除背景音乐(史上最全方案)
    NVIDIA显卡驱动安装步骤
    Python之NumPy(axis=0 与axis=1)区分
  • 原文地址:https://www.cnblogs.com/daysme/p/13531892.html
Copyright © 2020-2023  润新知