使用cheerio获取XML文档中的所有标签

时间:2019-05-20 22:28:36

标签: node.js xml cheerio

我正在尝试使用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');

1 个答案:

答案 0 :(得分:0)

由于@pguardiario,我能够找出以下有效的代码

$('*').contents()
    .filter((index, element) => { return element.type === 'tag' })
    .map((index, element) => { return element.name } ) 
    .get();

fs.readdirsync()循环内的近250K xml文件上运行上述操作仅花费15分钟即可生成所有文件中使用的唯一标记的列表。