我对 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 中我想要推送到数组或对象的某些特定节点(我还没有达到该阶段,但首先我需要定位节点)..
任何帮助/建议将不胜感激。
看来您以错误的方式调用了
querySelector
。这是我在 JSdom
的文档中找到的内容:
dom.window.document.querySelector("p").textContent
就你而言,我应该是
xmlDOM.window.document.querySelector("img");
假设您的 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);
}
})();