2016-12-10 11 views
0

Node.jsとxml2jsでXMLを解析しようとしています。ドキュメントには、$が属性にアクセスする文字であることが示されています。私の場合はうまくいかないようです。XML属性がNode.jsで動作しないxml2js

オブジェクトresult.ApiResponse.CommandResponseは正常に動作します。しかし、私が後で置くものは何も定義されていません。

はここに私のコードですが、それは$が定義されていないと言う:

var xml2js = require('xml2js'); 
var util = require('util'); 

var parser = new xml2js.Parser(); 
var xml = '<ApiResponse Status="OK"><Errors/><Warnings/><RequestedCommand>namecheap.domains.check</RequestedCommand><CommandResponse Type="namecheap.domains.check"><DomainCheckResult Domain="us.xyz" Available="true" ErrorNo="0" Description="" IsPremiumName="true" PremiumRegistrationPrice="13000.0000" PremiumRenewalPrice="13000.0000" PremiumRestorePrice="65.0000" PremiumTransferPrice="13000.0000" IcannFee="0.0000" EapFee="0.0000"/></CommandResponse><Server>PHX01APIEXT01</Server><GMTTimeDifference>--5:00</GMTTimeDifference><ExecutionTime>4.516</ExecutionTime></ApiResponse>'; 

parser.parseString(xml, function (err, result) { 

console.log(util.inspect(result.ApiResponse.CommandResponse.DomainCheckResult.$.Available, false, null))  

}); 

ここではconsole.log(結果)です:

{ ApiResponse: 
    { '$': { Status: 'OK' }, 
    Errors: [ '' ], 
    Warnings: [ '' ], 
    RequestedCommand: [ 'namecheap.domains.check' ], 
    CommandResponse: 
     [ { '$': { Type: 'namecheap.domains.check' }, 
      DomainCheckResult: 
      [ { '$': 
       { Domain: 'us.xyz', 
        Available: 'true', 
        ErrorNo: '0', 
        Description: '', 
        IsPremiumName: 'true', 
        PremiumRegistrationPrice: '13000.0000', 
        PremiumRenewalPrice: '13000.0000', 
        PremiumRestorePrice: '65.0000', 
        PremiumTransferPrice: '13000.0000', 
        IcannFee: '0.0000', 
        EapFee: '0.0000' } } ] } ], 
    Server: [ 'PHX01APIEXT01' ], 
    GMTTimeDifference: [ '--5:00' ], 
    ExecutionTime: [ '4.516' ] } } 

答えて

1

CommandResponseDomainCheckResultが実際に配列されているので、あなたが必要なように見えます[0]を使用して最初の要素にアクセスしてから、データを詳しく調べてください。

console.log(util.inspect(
    result.ApiResponse.CommandResponse[0].DomainCheckResult[0].$.Available, 
    false, null 
)) 
+0

ありがとうございました。 –

関連する問題