如何在 Javascript 中读取 XML 文件? [复制]

Posted

技术标签:

【中文标题】如何在 Javascript 中读取 XML 文件? [复制]【英文标题】:How to read XML file in Javascript? [duplicate] 【发布时间】:2019-05-31 21:38:06 【问题描述】:

我正在为 Discord 创建一个机器人。我正在从 Internet 下载星座 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】:

你可以使用像https://www.npmjs.com/package/xml-js这样的库

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

引用这个包,这里是一个将 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 中提取所需内容的方法

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

【讨论】:

我将 XML 转换为 JSON。但我仍然不明白如何引用元素“aries->today”。我试过这样: var ResultData = convert.xml2json(HoroscopeData, compact: true, spaces: 4); console.log(ResultData.horo.aries.today); “ResultData”现在是字符串了吗? 我们编辑了帖子底部的解释? 非常感谢。没有你我做不到。现在更困难的部分已经开始了。异步/等待 =) 哈哈没问题,也许你应该看看我几天前做的这篇文章,很乐意帮助解决任何问题,直到它点击它才可怕! ***.com/questions/53992226/…

以上是关于如何在 Javascript 中读取 XML 文件? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

javascript 从文件中读取XML

如何使用 javascript 或 jquery 读取 DBUnit XML

如何读取xml文件导出为excel文件

如何用jquery/javascript读取xml文件

如何在 C# 中读取和解析 XML 文件?

使用 JavaScript 语法在 AppleScript 中打开 XML 文件