如何在 JavaScript node.js 中将 xml 文件解析为数组
Posted
技术标签:
【中文标题】如何在 JavaScript node.js 中将 xml 文件解析为数组【英文标题】:How to parse xml file to array in JavaScript node.js 【发布时间】:2016-08-14 07:08:28 【问题描述】:我是初学者,在 Node.js 中将数据从 xml 文件解析到数组时遇到问题?
来自 xml 的数据:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xml xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<record>
<Name>Apple</Name>
<Code>AP</Code>
<Price>2,5</Price>
</record>
<record>
<Name>Kiwi</Name>
<Code>KI</Code>
<Price>1,5</Price>
</record>
</xml>
我期望这样的数组:
var array = [
Name: 'Apple', Code: 'AP', Price: '2,5',
Name: 'Kiwi', Code: 'KI', Price: '1,5'
];
@EDIT - 我们更接近了
我尝试使用xml2js npm,结果是:
"xml":
"$":
"xmlns:xsi": "http://www.w3.org/2001/XMLSchema-instance
,
"record": [
"Name": [
"Apple"
],
"Code": [
"AP"
],
"Price": [
"2,5"
]
,
"Name": [
"Kiwi"
],
"Code": [
"KI"
],
"Price": [
"1,5"
]
]
我当前的代码:
var fs = require('fs');
var parseString = require('xml2js').parseString;
fs.readFile('test_data.xml', function(err, data)
parseString(data, function (err, result)
console.log(JSON.stringify(result, null, 2));
);
);
【问题讨论】:
【参考方案1】:在 npm 上查看众多 XML 解析器包之一。
例如:xml2js
var parseString = require('xml2js').parseString;
var xml = "<root>Hello xml2js!</root>"
parseString(xml, function (err, result)
console.dir(result);
);
如果您在读取 xml 文件时需要帮助,请查看 nodeJs 文件系统库。
Doc for reading a file:
var fs = require('fs');
fs.readFile('/etc/data.xml', (err, data) =>
if (err) throw err;
console.log(data);
);
编辑: 在一个功能中实现所有功能:
function loadXML(cb)
fs.readFile('test_data.xml', function(err, data)
parseString(data, function (err, result)
cb(result.xml.record)
);
);
loadXML(function(yourRecods)
// do whatever
);
【讨论】:
@DiPix 你能发布JSON.stringify(result, null, 2);
返回的内容吗?
只需使用var records = result.xml.record;
即可获得数组
谢谢 :) 应该够了
还有一件事,我怎样才能将此函数分配给某个变量?我试过了:var xmlData = fs.readFile('data-xml/test_data.xml', function (err, data) parseString(data, function (err, result) return result.xml.record; ); );
但是当我尝试使用时它是未定义的:/
检查我的编辑,你需要一个带有回调作为参数的函数以上是关于如何在 JavaScript node.js 中将 xml 文件解析为数组的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 javascript/node js 从数据库中将图片动态加载到网页上