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”,即可领红包。谢谢支持

上一篇下一篇

猜你喜欢

热点阅读