• 从树形 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)
    
    /**
    融资管理
    融资管理 -> 融资订单列表 -> 已完成
    融资管理 -> 融资订单列表 -> 待初审-被驳回
    融资管理 -> 融资订单列表 -> 待终审-被驳回
    融资管理 -> 用信明细
    融资管理 -> 放款查询
    结算管理
    结算管理 -> 月息对账
    结算管理 -> 月息对账 -> 待确认
    结算管理 -> 月息对账 -> 待确认 -> 确认账单
    财务管理
    财务管理 -> 银行账户管理
    财务管理 -> 银行账户管理 -> 提现
    财务管理 -> 对账管理
    财务管理 -> 对账管理 -> 放款对账
    **/
    
  • 相关阅读:
    WPF:改变ListBoxItem和ListViewItem的颜色
    WPF样式——经典博客
    WPF中的Style(风格,样式)
    WPF中的动画
    WPF StoryBoard用法
    WPF 单个触发器、多个触发器、多条件触发器
    WPF编程学习 —— 样式
    WFP学习好微博
    Style、ControlTemplate 和 DataTemplate 触发器
    Arcgis 中国区技术支持 官网
  • 原文地址:https://www.cnblogs.com/daysme/p/13531892.html
Copyright © 2020-2023  润新知