尝试将DOMParser与Node JS一起使用

尝试在我的js代码中使用DOMParser时遇到问题。在我的代码中,我通过xmlhttp.responseText

soap响应检索了一个xml文件。我希望能够以JSON格式访问其元素,因此我的代码如下所示:

var xml = new DOMParser();

xml = xml.parseFromString(xmlhttp.responseText, 'text/xml');

var result = xmlToJson(xml);

我收到此错误消息:ReferenceError:未定义DOMParser

编辑:此链接对我不起作用,因为我的JavaScript不在HTML页面中,因为它是一个node.js文件。

回答:

NodeJS本身不提供许多浏览器功能,例如DOM操作或XHR,因为这不是访问DOM的典型服务器任务-您必须使用外部库来执行此操作。

DOM的能力在很大程度上取决于库,以下是您可以使用的主要工具的快速比较:

  • :实现DOM级别4,这是最新的DOM标准,因此您可以在现代浏览器中执行的所有操作都可以在jsdom

        const jsdom = require("jsdom");

const dom = new jsdom.JSDOM(`<!DOCTYPE html><p>Hello world</p>`);

dom.window.document.querySelector("p").textContent; // 'Hello world'

  • :相同,但以更复杂的API为代价,具有增强的性能和灵活性:

        const htmlparser = require("htmlparser2");

const parser = new htmlparser.Parser({

onopentag: (name, attrib) => {

if (name=='p') console.log('a paragraph element is opening');

}

}, {decodeEntities: true});

parser.write(`<!DOCTYPE html><p>Hello world</p>`);

parser.end();

// console output: 'a paragraph element is opening'

  • :基于HTML DOM解析的jQuery实现htmlparser2

        const cheerio = require('cheerio');

const $ = cheerio.load(`<!DOCTYPE html><p>Hello world</p>`);

$('p').text('Bye moon');

$.html(); // '<!DOCTYPE html><p>Bye moon</p>'

  • :完全实现DOM级别2,部分实现DOM级别3。与HTML以及XML一起使用

  • :基于正则表达式的DOM解析器,它实现了一些DOM方法,例如getElementById。由于用正则表达式解析HTML是一个非常糟糕的主意,因此我不建议将其用于生产。

以上是 尝试将DOMParser与Node JS一起使用 的全部内容, 来源链接: utcz.com/qa/432557.html

回到顶部