我在js代码中try 使用DOMParser时遇到了问题.在我的代码中,我通过xmlhttp检索xml文件.responseText soap响应.我希望能够以JSON格式访问其元素,因此我的代码如下所示:

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

我收到以下错误消息:

编辑:

推荐答案

许多浏览器功能,比如DOM操作或XHR,在NodeJ上都不可用,因为这不是访问DOM的典型服务器任务——您必须使用外部库来实现这一点.

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

  • 100:实现DOM级别4,即the latest DOM standard,所以在现代浏览器上可以做的所有事情,都可以在jsdom中完成.它是在 node 上执行浏览器操作的事实上的行业标准,由Mocha、Vue Test Utils、Webpack Prerender SPA插件和许多其他应用程序使用:

    const jsdom = require("jsdom");
    const dom = new jsdom.JSDOM(`<!DOCTYPE html><p>Hello world</p>`);
    dom.window.document.querySelector("p").textContent; // 'Hello world'
    
  • 100:如果可以 Select 使用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';
    
  • 100:与jsdom相同,但以更复杂的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'
    
  • 100: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>'
    
  • 100:完全实现DOM级别2,部分实现DOM级别3.适用于HTML,也适用于XML

  • 100:基于正则表达式的DOM解析器,实现了一些DOM方法,比如getElementById.因为用正则表达式解析HTML是a very bad idea,所以我不建议在生产中使用这种方法.

Node.js相关问答推荐

从目录中获取所有文件,而不是NodeJS中的单个文件

如何将Node.js与Nuxt.js一起使用?

如何在MEVN堆栈中结合创建和更新表单流程?

如何从shell脚本中计算ecmascript模块?

如何发送比特币BTC使用发送加密使用WIF密钥在 node ,js

Node-Red Tasmota 错误:连接 ECONNREFUSED 192.168.77.21:1883

2023年如何在Node.js中使用Gmail发送邮箱?

处理 UTC 日期和future

fastify:流过早关闭

在mongodb中只查询整数

Firestore promise 在退货前等待产品详细信息

突然 React 无法执行create-react-app命令.为什么会发生这种情况,我该如何解决?

Web3.js 脚本在监听 CreatedPairs 时退出

使用 ES6 语法和动态路径导入模块

如何在 Node.js 中使用 chmod

如何在 NodeJs 中下载和解压缩内存中的 zip 文件?

如何brew安装特定版本的Node?

npm install 给出警告,npm audit fix 不起作用

从 node.js 连接到 mongodb 时出现 ECONNREFUSED 错误

Node.js、PostgreSQL 错误:主机没有 pg_hba.conf 条目