首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Node.js : xml-js (npm版本1.6.4)

Node.js : xml-js (npm版本1.6.4)
EN

Stack Overflow用户
提问于 2018-05-29 06:21:25
回答 1查看 809关注 0票数 1

我很难弄清楚如何使用xml-js。当我运行代码时,我看到了输出。但是当我试图从一个特定的键获取一个值时,它给了我一个未定义的或无法读取的未定义错误的属性。我在下面添加了我的代码。我做错了什么?

代码语言:javascript
复制
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;,但都不起作用。任何帮助都将不胜感激。谢谢!!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-29 06:26:23

<title>位于<note>内部,因此要访问它,您应该执行以下操作:

result2.note.title

但是的主要问题是,您使用的是.xml2json方法而不是.xml2js,这将产生一个JSON字符串而不是对象。

docs

要将

文本转换为JavaScript对象,请使用xml2js()。要将XML文本转换为JSON文本,请使用xml2json()。

代码语言:javascript
复制
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属性,这些属性当然不存在。

代码语言:javascript
复制
''.title; // undefined
''.note; // undefined
''.note.title // TypeError cannot read property 'title' of undefined

注意:如果您使用的是npm 1.6,这意味着您使用的是不再支持的Node.js版本,您应该更新到v8.x.x (LTS)或最新的v10.x.x

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50574011

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档