我无法弄清楚如何使用xml-js
。当我运行代码时,我看到了输出。但是当我尝试从特定键获取值时,它会给我一个未定义或无法读取未定义错误的属性。我在下面添加了我的代码。我做错了什么?
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>';
var result2 = convert.xml2json(xml, {compact: true, spaces: 4});
console.log(result2);
我想说我希望title
的值为'happy'
。我试过这样做,但它没有工作...... result2.title;
甚至试过result2._text;
但没有任何作用。任何帮助,将不胜感激。谢谢!!
答案 0 :(得分:0)
<title>
位于<note>
内,因此为了访问它,您应该执行以下操作:
result2.note.title
但您的主要问题是您使用的是.xml2json
方法,而不是.xml2js
,这将产生一个JSON字符串而不是一个对象。
来自docs:
要将XML文本转换为JavaScript对象,请使用xml2js()。转换XML 文本到JSON文本,使用xml2json()。
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>';
var result2 = convert.xml2js(xml, {compact: true});
console.log(result2.note.title); // { _text: 'Happy' }
console.log(result2.note.title._text); // 'Happy'
spaces
选项本身适用于xml2json
,因此您不需要它。
使用.xml2json
时,您试图访问字符串的title
或note
属性,这当然不存在。
''.title; // undefined
''.note; // undefined
''.note.title // TypeError cannot read property 'title' of undefined
注意:如果您使用的是npm
1.6,则表示您使用的是不再受支持的Node.js版本,您应该更新为v8.xx(LTS)或到最新的v10.xx