從樹形 html 結構中獲取文字
阿新 • • 發佈:2020-08-19
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)
/**
融資管理
融資管理 -> 融資訂單列表 -> 已完成
融資管理 -> 融資訂單列表 -> 待初審-被駁回
融資管理 -> 融資訂單列表 -> 待終審-被駁回
融資管理 -> 用信明細
融資管理 -> 放款查詢
結算管理
結算管理 -> 月息對賬
結算管理 -> 月息對賬 -> 待確認
結算管理 -> 月息對賬 -> 待確認 -> 確認賬單
財務管理
財務管理 -> 銀行賬戶管理
財務管理 -> 銀行賬戶管理 -> 提現
財務管理 -> 對賬管理
財務管理 -> 對賬管理 -> 放款對賬
**/