如何在Javascript中读取XML文件?

时间:2019-01-05 16:12:20

标签: javascript node.js xml discord

我正在为Discord创建一个机器人。我正在从互联网下载星座XML文件。 XML文件结构如下:

<?xml version="1.0" encoding="utf-8"?>
<horo>
<date yesterday="04.01.2019" today="05.01.2019" tomorrow="06.01.2019"/>

<aries>
<yesterday>
Text 1
</yesterday>
<today>
Text 2
</today>
<tomorrow>
Text 3
</tomorrow>
</aries>

......

</horo>

我尝试用javascript阅读它:

const fs = require('fs');
var HoroscopeData = new Object();

fs.readFile('./module/Horoscope.xml', 'utf8', function(err, data){

  if(err) {
    console.error("ERROR");
  }

  console.log("OK");
  HoroscopeData = data;
}

console.log(HoroscopeData);

在控制台中,我看到了与XML文件相同的内容

但是我不明白如何引用“ HoroscopeData”字段。 如何返回“ aries-> today”中的字符串?

1 个答案:

答案 0 :(得分:2)

您可以使用https://www.npmjs.com/package/xml-js

之类的库

要将XML转换为JSON,您可以使用内置的javascript JSON函数JSON.parse(target) or JSON.stringify(target)

访问XML

引用此软件包,这是将XML转换为JSON的简单示例

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 result1 = convert.xml2json(xml, {compact: true, spaces: 4});
var result2 = convert.xml2json(xml, {compact: false, spaces: 4});
console.log(result1, '\n', result2);

如果您不喜欢直接使用XML,那么这可能会对您有所帮助,因为与JSON交互是JavaScript很简单。

这是从xml-js将XML转换为JSON的JSON中提取所需内容的方法

var convert = require('xml-js');
var xml =
'<?xml version="1.0" encoding="utf-8"?>'+
'<horo>'+
'<date yesterday="04.01.2019" today="05.01.2019" tomorrow="06.01.2019"/>'+
'<aries>'+
'<yesterday>'+
'Text 1'+
'</yesterday>'+
'<today>'+
'Text 2'+
'</today>'+
'<tomorrow>'+
'Text 3'+
'</tomorrow>'+
'</aries>'+
'</horo>';

const rawJSON = convert.xml2json(xml, {compact: true, spaces: 4});
const convertedJSON = JSON.parse(rawJSON);
console.log(convertedJSON.horo.aries.today._text);