如何使用node.js从XML中提取数据

时间:2015-08-05 05:41:26

标签: javascript xml node.js

如何使用node.js从XML类型rest API中提取数据?

这是我用来通过发送rest api请求来获取数据的代码:

//Load the request module
var request = require('request');
//Lets configure and request
request(
    {
        url: 'http://nemo.sonarqube.org/api/resources?resource=DEV:Fabrice%20Bellingard:org.codehaus.sonar:sonar&metrics=ncloc,coverage', //URL to hit
        method: 'GET', //Specify the method
        headers: { //We can define headers too
            'Authorization': 'Basic ' + new Buffer( 'admin' + ':'+'admin').toString('base64'),
            'Content-Type': 'MyContentType',
            'Custom-Header': 'Custom Value'
        }
    },
    function(error, response, body){
        if(error) {
            console.log(error);
        } else {
            var obj=JSON.parse(response.body);
            console.log(obj.id);
        }
    }
)
var express = require('express');
var app = express();
var server = app.listen(3000,function (){
    console.log('port 3000');
}

);

当我使用浏览器发送请求时,结果显示为:

<resources>
 <resource>
 <id>400009</id>
 <key>DEV:Fabrice Bellingard:org.codehaus.sonar:sonar</key>
 <name>SonarQube</name>
 <lname>SonarQube</lname>
 <scope>PRJ</scope>
 <qualifier>DEV_PRJ</qualifier>
 <date>2015-08-04T13:10:57+0000</date>
 <creationDate/>
 <copy>48569</copy>
 <msr>
   <key>ncloc</key>
   <val>879.0</val>
   <frmt_val>879</frmt_val>
 </msr>
 <msr>
   <key>coverage</key>
   <val>81.8</val>
   <frmt_val>81.8%</frmt_val>
 </msr>
</resource>
</resources>

我想提取 id 并使用node.js在控制台上打印它。 我想如何编辑上面的代码?

1 个答案:

答案 0 :(得分:-1)

问题是response.body是数组格式,所以得到数组中的第一项,然后是id

//Load the request module
var request = require('request');
//Lets configure and request
request({

    url: 'http://nemo.sonarqube.org/api/resources?resource=DEV:Fabrice%20Bellingard:org.codehaus.sonar:sonar&metrics=ncloc,coverage', //URL to hit

    method: 'GET', //Specify the method
    headers: { //We can define headers too
        'Authorization': 'Basic ' + new Buffer('admin' + ':' + 'admin').toString('base64'),
        'Content-Type': 'MyContentType',
        'Custom-Header': 'Custom Value'
    }
}, function (error, response, body) {
    if (error) {
        console.log(error);
    } else {
        var arr = JSON.parse(response.body);
        var obj = arr[0];
        console.log(obj.id);
    }
})
var express = require('express');
var app = express();
var server = app.listen(3000, function () {
    console.log('port 3000');;
});