如何使用 node.js 从在线获取 xml 并将其解析为 javascript 对象?我一直在搜索 npm 寄存器,但只找到了如何解析 xml 字符串,而不是如何获取它。
问问题
8436 次
3 回答
6
要获取在线资源,您可以使用http.get()
. 数据可以加载到内存中,也可以直接发送到 XML 解析器,因为有些支持解析流的特性。
var req = http.get(url, function(res) {
// save the data
var xml = '';
res.on('data', function(chunk) {
xml += chunk;
});
res.on('end', function() {
// parse xml
});
// or you can pipe the data to a parser
res.pipe(dest);
});
req.on('error', function(err) {
// debug error
});
于 2013-10-05T15:05:48.947 回答
0
这也应该有效。
const request = require("request-promise");
const web_url = "https://www.gillmanacura.com/sitemap.xml";
(async() => {
let emptyData = [];
let resp = await request({
uri: web_url,
headers:{},
timeout:10000,
json: true,
gzip: true
});
console.log(resp)
})();
于 2020-12-31T17:54:47.987 回答
0
使用节点获取
这是一个使用node-fetch检索 xml 的示例。
安装较低版本的 node-fetch 以使用 require 或使用常规 ESM 导入。
npm install node-fetch@^2.6.6
const fetch = require('node-fetch');
const xml_to_js = require('xml-js');//npm i xml-js
var query = "https://api.dreamstime.com/api.xml?username="+usernamer+"&password="+api_key+"&type=get&request=search&srh_field="+term;
fetch(query, {
method: 'GET',
headers: {
'Content-Type': 'text/xml',
'User-Agent': '*'
},
}).then(function(response){ return response.text(); })
.then(function(xml) {
//convert to workable json
var json_result = xml_to_js.xml2json(xml, {compact: true, spaces: 4});
console.log(json_result);//json
})
.catch((error) => {
console.error('Error:', error);
});
于 2022-02-05T04:12:15.050 回答