Node.js:xml-js(npm ver 1.6.4)

时间:2018-05-28 22:21:25

标签: javascript json node.js xml

我无法弄清楚如何使用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;但没有任何作用。任何帮助,将不胜感激。谢谢!!

1 个答案:

答案 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时,您试图访问字符串的titlenote属性,这当然不存在。

''.title; // undefined
''.note; // undefined
''.note.title // TypeError cannot read property 'title' of undefined

注意:如果您使用的是npm 1.6,则表示您使用的是不再受支持的Node.js版本,您应该更新为v8.xx(LTS)或到最新的v10.xx