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

使用Node.js的xml-js库(v1.6.4)无法获取指定键值,求助排查

解决xml-js库转换后无法获取特定键值的问题

嘿,我完全懂你碰到的这个坑!你现在的问题核心是**convert.xml2json()返回的是JSON格式的字符串,不是直接可用的JavaScript对象**,所以你直接用result2.title或者result2._text去访问自然会得到undefined,甚至报错。

咱们一步步来修正:

第一步:把JSON字符串解析为JS对象

你需要先用JSON.parse()把转换后的结果转成JS对象,这样才能通过点语法访问属性。

第二步:对应compact模式的结构访问属性

当你设置compact: true时,xml-js会把XML结构映射成嵌套的对象:

  • 根节点<note>对应对象里的note属性
  • 子节点<title>是note下的title属性
  • 节点的文本内容会存在_text字段里

修正后的完整代码

var convert = require('xml-js');
var xml = '<?xml version="1.0" encoding="utf-8"?>' +
          '<note importance="high" logged="true">' +
          ' <title>Happy</title>' +
          ' <todo>Work</todo>' +
          ' <todo>Play</todo>' +
          '</note>';
// 转换为JSON字符串后,解析成JS对象
var result2 = JSON.parse(convert.xml2json(xml, {compact: true, spaces: 4}));
// 正确访问title的文本值
console.log(result2.note.title._text); // 输出: Happy

// 额外补充:访问多个todo节点的方式
// 因为有两个<todo>,所以result2.note.todo是数组
console.log(result2.note.todo[0]._text); // 输出: Work
console.log(result2.note.todo[1]._text); // 输出: Play

这样你就能顺利拿到想要的内容啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:41:24