Вы можете сделать это, используя библиотеку, о которой вы спрашивали:
const htmlparser = require('htmlparser2');
const domUtils = require('domutils');
const file = '<h1 id="heading1">Some heading</h1><p>Foobar</p>';
var handler = new htmlparser.DomHandler(function(error, dom) {
if (error) {
console.log('Parsing had an error');
return;
} else {
const item = domUtils.findOne(element => {
const matches = element.attribs.id === 'heading1';
return matches;
}, dom);
if (item) {
console.log(item.children[0].data);
}
}
});
var parser = new htmlparser.Parser(handler);
parser.write(file);
parser.end();
Результат, который вы получите, - "Some Heading". Однако, на мой взгляд, вам будет проще использовать библиотеку запросов, предназначенную для этого. Конечно, вам не нужно этого делать, но вы можете заметить, насколько проще следующий код: Как получить имя элемента в cheerio с помощью node.js
Cheerio ИЛИ API querySelector, такой как https://www.npmjs.com/package/node-html-parser, если вы предпочитаете нативные селекторы запросов, гораздо более скудные.
Вы можете сравнить этот код с чем-то более скудным, например, node-html-parser
, который поддерживает простые запросы:
const { parse } = require('node-html-parser');
const file = '<h1 id="heading1">Some heading</h1><p>Foobar</p>';
const root = parse(file);
const text = root.querySelector('#heading1').text;
console.log(text);