gpt4 book ai didi

xml - Expressjs 响应作为 JSON 和 Xml

转载 作者:数据小太阳 更新时间:2023-10-29 02:01:07 25 4
gpt4 key购买 nike

我在做什么::我正在尝试为数据库中的数据集生成 json 和 xml 输出

Express Code::我在这里尝试 JSON 响应

var express = require('express')
, async = require('async')
, http = require('http')
, mysql = require('mysql');
var xml = require('xml');

var app = express();

var connection = mysql.createConnection({
host: 'localhost',
user: 'root',
database: 'MyDatabase'
});

connection.connect();

// all environments
app.set('port', process.env.PORT || 3007);

app.use(express.static(__dirname + '/public/images'));

app.get('/Result/',function(request,response){
var name_of_restaurants;

async.series( [
// Get the first table contents
function ( callback ) {
connection.query('SELECT * FROM mas_buf_type', function(err, rows, fields)
{
console.log('Connection result error '+err);
name_of_restaurants = rows;
callback();
});

}

// Send the response
], function ( error, results ) {


response.json({'restaurants' : name_of_restaurants });



//response.set('Content-Type', 'text/xml');
//response.send(xml(name_of_restaurants));
} );

} );




http.createServer(app).listen(app.get('port'),function(){
console.log('Express server listening on port'+app.get('port'));
});

我的输出::

{
"restaurants": [
{
"Buf_Type_Id": 1,
"Buf_Type_Name": "Breakfast"
},
{
"Buf_Type_Id": 2,
"Buf_Type_Name": "Lunch"
},
{
"Buf_Type_Id": 3,
"Buf_Type_Name": "Dinner"
}
]
}

现在代替

 response.json({'restaurants' : name_of_restaurants });

我添加了这些行以获得 XML输出

response.set('Content-Type', 'text/xml');
response.send(xml(name_of_restaurants));

输出::

<Buf_Type_Id>1</Buf_Type_Id>
<Buf_Type_Id>2</Buf_Type_Id>
<Buf_Type_Id>3</Buf_Type_Id>

我的问题::

  • 很明显你可以看到两个输出是不同的,我找不到xml 输出中的第二列
  • 如何解决这个问题
  • 我需要做哪些改变

{编辑}

var express = require('express')
, async = require('async')
, http = require('http')
, mysql = require('mysql');
var xml = require('xml');

var app = express();

var connection = mysql.createConnection({
host: 'localhost',
user: 'root',
database: 'findmybuffet'
});

connection.connect();

// all environments
app.set('port', process.env.PORT || 3007);

app.use(express.static(__dirname + '/public/images'));

app.get('/Result/',function(request,response){
var name_of_restaurants;

async.series( [
// Get the first table contents
function ( callback ) {
connection.query('SELECT * FROM mas_buf_type', function(err, rows, fields)
{
console.log('Connection result error '+err);
name_of_restaurants = rows;
callback();
});

}

// Send the response
], function ( error, results ) {


//response.json({'restaurants' : name_of_restaurants });

response.set('Content-Type', 'text/xml');
//response.send(xml(name_of_restaurants));

response.send(xml({restaurants:[
name_of_restaurants.map(function(r){
return [
{ Buf_Type_Id: r.Buf_Type_Id },
{ Buf_Type_Name: r.Buf_Type_Name },
]
})
]}));


} );

} );


http.createServer(app).listen(app.get('port'),function(){
console.log('Express server listening on port'+app.get('port'));
});

输出::

<restaurants>
<0>
<Buf_Type_Id>1</Buf_Type_Id>
<Buf_Type_Name>Breakfast</Buf_Type_Name>
</0>
</restaurants>

我们也清楚地看到<0>正在生成....这不是必需的...如何删除它?

最佳答案

因此,我四处寻找适合您的更好的对象到 XML 映射器。在找到我喜欢的一个之前,我尝试了三个(它易于使用,并且对您的应用程序有意义)。抛弃旧的,使用object-to-xml相反:

var o2x = require('object-to-xml');

response.set('Content-Type', 'text/xml');
response.send(o2x({
'?xml version="1.0" encoding="utf-8"?' : null,
restaurants: {
restaurant: name_of_restaurants
}
}));

关于xml - Expressjs 响应作为 JSON 和 Xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21399572/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com