使用xml-js解析器从xml转换后无法访问json值

时间:2019-06-26 03:41:43

标签: node.js json xml

我使用以下代码解析xml

var convert = require('xml-js');
var xml = require('fs').readFileSync('./2B2DE7DD-FD11-4F2C-AF0D-A244E5977CBA.xml', 'utf8');
result = convert.xml2json(xml, { spaces: 4});

结果抛出以下JSON

{
    "declaration": {
        "attributes": {
            "version": "1.0",
            "encoding": "utf-8"
        }
    }
}

但是,如果我尝试使用result["declaration"]访问“声明”,则控制台会返回undefined

我应该使用其他解析器,还是获取值有问题?

2 个答案:

答案 0 :(得分:0)

result的数据类型是String,而不是JavaScript对象。也就是说,convert.xml2json(xml, { spaces: 4});语句将返回JSON字符串,而不是JS对象。

要访问declaration,您需要将JSON字符串解析为object:

var convert = require('xml-js');
var xml = require('fs').readFileSync('./2B2DE7DD-FD11-4F2C-AF0D-A244E5977CBA.xml', 'utf8');
result = convert.xml2json(xml, { spaces: 4});

result = JSON.parse(result);

答案 1 :(得分:0)

如果要返回对象,请使用xml2js代替xml2json

result = convert.xml2js(xml, options);    // to convert xml text to javascript object
result = convert.xml2json(xml, options);  // to convert xml text to json text