gpt4 book ai didi

javascript - 尝试将 DOMParser 与 Node js 一起使用

转载 作者:IT老高 更新时间:2023-10-28 21:58:18 33 4
gpt4 key购买 nike

尝试在我的 js 代码中使用 DOMParser 时遇到问题。在我的代码中,我通过 xmlhttp.responseText 肥皂响应检索一个 xml 文件。我希望能够以 JSON 格式访问其元素,所以我的代码如下所示:

var xml = new DOMParser();
xml = xml.parseFromString(xmlhttp.responseText, 'text/xml');
var result = xmlToJson(xml);

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

编辑:这个链接对我不起作用,因为我的 javascript 不在 HTML 页面中,因为它是一个 node.js 文件。 JavaScript DOMParser access innerHTML and other properties

最佳答案

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

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

  • jsdom :实现 DOM 级别 4,即 the latest DOM standard ,所以你可以在现代浏览器上做的所有事情,你都可以在 jsdom 中完成。它是在 Node 上进行浏览器工作的事实上的行业标准,被 Mocha、Vue Test Utils、Webpack Prerender SPA Plugin 和许多其他人使用:

    const jsdom = require("jsdom");
    const dom = new jsdom.JSDOM(`<!DOCTYPE html><p>Hello world</p>`);
    dom.window.document.querySelector("p").textContent; // 'Hello world'
  • deno_dom :如果使用 Deno 代替 Node 是一个选项,这个库提供了 DOM 解析能力:

    import { DOMParser } from "https://deno.land/x/deno_dom/deno-dom-wasm.ts";
    const parser = new DOMParser();
    const document = parser.parseFromString('<p>Hello world</p>', 'text/html');
    document.querySelector('p').textContent; // 'Hello world';
  • htmlparser2 :与 jsdom 相同,但以更复杂的 API 为代价提高了性能和灵 active :

    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'
  • cheerio :htmlparser2基于HTML DOM解析的jQuery实现:

    const cheerio = require('cheerio');
    const $ = cheerio.load(`<!DOCTYPE html><p>Hello world</p>`);
    $('p').text('Bye moon');
    $.html(); // '<!DOCTYPE html><p>Bye moon</p>'
  • xmldom :完全实现 DOM 级别 2,部分实现 DOM 级别 3。适用于 HTML,也适用于 XML

  • dom-parser :基于正则表达式的 DOM 解析器,实现了一些 DOM 方法,例如 getElementById。由于用正则表达式解析 HTML 是 a very bad idea我不会推荐这个用于生产。

关于javascript - 尝试将 DOMParser 与 Node js 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11398419/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com