使用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
相关产品推荐
相关产品推荐

