How to read XML file in Javascript? [duplicate]

删除回忆录丶 提交于 2019-12-13 08:49:07

问题


I'm creating a bot for the Discord. I'm downloading a horoscope XML-file from the Internet. The XML-file structure is as follows:

<?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>

I try to read it in 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);

In the console, I see the same thing that is in the XML-file

But I don't understand how to refer to "HoroscopeData" fields. How do I return a string which is in "aries->today"?


回答1:


You could use a library like https://www.npmjs.com/package/xml-js

To convert the XML to JSON where you can access it using the built in javascript JSON functions JSON.parse(target) or JSON.stringify(target)

quoting this package, here is an example of how simple it is to turn XML into 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);

If you are uncomfortable working directly in XML, this may help you because interacting with JSON is JavaScript is simple.

This is how to then extract what you need from the JSON that xml-js converts your XML to

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);


来源:https://stackoverflow.com/questions/54053780/how-to-read-xml-file-in-javascript

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!