You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用SaxonJS与Node.js获取XML文件中的变量值

解决Node.js中SaxonJS获取XML属性的错误问题

错误原因

你用jsdom生成的DOM对象和SaxonJS的API不兼容,SaxonJS有自己的XML处理模型,不需要依赖jsdom来解析XML。

正确实现代码

方式一:直接加载XML文件

const saxonJs = require('saxon-js');
const fs = require('node:fs');

const xmlFilePath = './your-xml-file.xml'; // 替换为你的XML文件路径

// 使用SaxonJS自带的getResource加载XML
SaxonJS.getResource({
  file: xmlFilePath,
  type: 'xml'
}).then(doc => {
  const xpathQuery = '//listener/@port';
  const result = saxonJs.XPath.evaluate(xpathQuery, doc);
  console.log('Listener端口值:', result.value); // 输出55556
}).catch(err => {
  console.error('处理出错:', err);
});

方式二:解析已读取的XML字符串

const saxonJs = require('saxon-js');
const fs = require('node:fs');

const xmlFilePath = './your-xml-file.xml';
const xmlContent = fs.readFileSync(xmlFilePath, 'utf8');

// 用SaxonJS解析XML字符串为兼容的文档对象
const doc = SaxonJS.parseXml(xmlContent);
const xpathQuery = '//listener/@port';
const result = saxonJs.XPath.evaluate(xpathQuery, doc);
console.log('Listener端口值:', result.value); // 输出55556

说明

  • 两种方式都不需要引入jsdom,直接使用SaxonJS自带的XML解析能力,生成的文档对象能完美适配SaxonJS.XPath.evaluate方法。
  • 执行后会直接输出listener节点的port属性值55556。

内容的提问来源于stack exchange,提问作者1Z3173C0D3

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 10:02:38