node 使用xml2js模块解析xml
2017-09-09 本文已影响0人
Gary嘉骏
假设场景
使用一个游戏网站的api去获得角色的id:如下:
https://api.eveonline.com/eve/CharacterID.xml.aspx?names=Minmatar
在浏览器的地址栏直接输入上面地址能看到以下xml内容:
<eveapi version="2">
<currentTime>2017-08-18 01:13:12</currentTime>
<result>
<rowset name="characters" key="characterID" columns="name,characterID">
<row name="Minmatar" characterID="650389131"/>
</rowset>
</result>
<cachedUntil>2017-09-18 01:13:12</cachedUntil>
</eveapi>
用node怎么发出请求然后解析呢?
解决
添加依赖:
var async = require('async');var request = require('request');
发出请求并解析:
var characterIdLookupUrl = 'https://api.eveonline.com/eve/CharacterID.xml.aspx?names=Minmatar' ;
var parser = new xml2js.Parser();
request.get(characterIdLookupUrl, function(err, request, xml) {
if (err) return throw new error('请求失败'+err);
parser.parseString(xml, function(err, parsedXml) {
if (err) return throw new error('解析'+err);
var characterId = parsedXml.eveapi.result[0].rowset[0].row[0].$.characterID;
console.log( characterId );
});
}
如何解析
关键:
parsedXml.eveapi.result[0].rowset[0].row[0].$.characterID
对照xml
内容,不难看到这就像dom树读取一样,想再清楚些,console.log(parsedXml.eveapi)
就更清晰了
done
如果觉得文章对你有点用的话,麻烦拿出手机,这里有一个你我都有的小福利(每天一次): 打开支付宝首页搜索“8601304”,即可领红包。谢谢支持