在node js中定位一个xml节点

问题描述 投票:0回答:2

我对 NodeJS 很陌生,如果我的查询太基础,请读者多多关照。

我有一个 xml 文件,很容易使用 DOMParser 和 querySelector 来解析和定位某些节点,并使用 javascript 作为前端(浏览器)...但我在支持节点上尝试相同的操作,我意识到 DOMParser 并不是真正的后端的一部分..这就是我正在尝试的..

fetch(`http://localhost:3000/data/rogan/gallery.xml`)
    .then((response) => response.text())
    .then((xml) => {
      const xmlDOM = new JSDOM(xml, {
        contentType: "text/xml",
        features: {
          QuerySelector: true,
        },
      });

      const images = xmlDOM.querySelector("img");
      console.log(images);
      res.send(images);
    })
    .catch((err) => console.log(err));
});

node中querySelector的使用是否错误?我的意思是这是前端的东西而不是我们在节点中使用的东西?

我能够获取 XML,但我不确定如何定位 xml 中我想要推送到数组或对象的某些特定节点(我还没有达到该阶段,但首先我需要定位节点)..

任何帮助/建议将不胜感激。

node.js xml jsdom
2个回答
0
投票

看来您以错误的方式调用了

querySelector
。这是我在
JSdom
的文档中找到的内容:

dom.window.document.querySelector("p").textContent

就你而言,我应该是

xmlDOM.window.document.querySelector("img");

0
投票

假设您的 XML 中有一个

<item>
节点要定位:

const jsdom = require("jsdom");
const { JSDOM } = jsdom;
var myUrl = "https://example.com/feed.xml";

(async () => {
  try {
    console.log("Fetching " + myUrl + " ...");
    let dom = await JSDOM.fromURL(myUrl);
    console.log(dom.window.document.querySelectorAll("item")[0].innerHTML)
    console.log("Done.");
    return;
  } catch (e) {
    console.log("Error Reading XML" + e);
  }
})();
© www.soinside.com 2019 - 2024. All rights reserved.