我正在尝试使用cheerio.js
转储xml文档中的所有标签。我的尝试如下,但它似乎不是遍历每个标签,而是遍历文档中的每个单词(对我而言似乎如此)
let uniqTags = {};
const listTags = function($, tagname) {
uniqTags[tagname] = '';
let childNodes = $(tagname).contents()
.map((index, element) => {
if (element.type === 'tag') {
return element.name
}
})
.get();
if (childNodes.length) {
for (let i = 0, j = childNodes.length; i < j; i++) {
listTags($, childNodes[i]);
}
}
}
const xml = fs.readFileSync(path.join(xmldir, xmlfile), 'utf8')
const $ = cheerio.load(xml, {
normalizeWhitespace: true,
xmlMode: true
});
listTags($, 'document');
答案 0 :(得分:0)
由于@pguardiario,我能够找出以下有效的代码
$('*').contents()
.filter((index, element) => { return element.type === 'tag' })
.map((index, element) => { return element.name } )
.get();
在fs.readdirsync()
循环内的近250K xml文件上运行上述操作仅花费15分钟即可生成所有文件中使用的唯一标记的列表。