美文网首页
node 使用xml2js模块解析xml

node 使用xml2js模块解析xml

作者: Gary嘉骏 | 来源:发表于2017-09-09 22:41 被阅读0次

    假设场景

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

    相关文章

      网友评论

          本文标题:node 使用xml2js模块解析xml

          本文链接:https://www.haomeiwen.com/subject/zcnajxtx.html