node 使用xml2js模块解析xml

假设场景

使用一个游戏网站的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”,即可领红包。谢谢支持

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,107评论 19 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,002评论 25 709
  • 个人入门学习用笔记、不过多作为参考依据。如有错误欢迎斧正 目录 简书好像不支持锚点、复制搜索(反正也是写给我自己看...
    kirito_song阅读 2,513评论 1 37
  • 一头驴,被挪用名额当作老师,因可以带人取水而得名。孙佳因为是坐着驴车打水的人所以对驴感情最深,在内心和行动上已然...
    棠七七阅读 437评论 0 0
  • 好像是因为大三了,仅存的大学日子少得可以用手指头数出来,所以对于时间,有了自己更多的看法,想要紧紧地抓住眼前的时光...
    三三先生阅读 1,160评论 10 19