5

如何使用 node.js 从在线获取 xml 并将其解析为 javascript 对象?我一直在搜索 npm 寄存器,但只找到了如何解析 xml 字符串,而不是如何获取它。

4

3 回答 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 回答