//requiring dependecies
var express = require('express');
var builder = require('xmlbuilder');
const admin = require('firebase-admin');
var serviceAccount = require('./xmltest-affa7-e92e88a0dc7b.json');
//initializing service account
admin.initializeApp({
credential: admin.credential.cert(serviceAccount)
});
//firebase database output
var newarray = []
function CreateXML(newjson) {
//outputing JSON to console in a clean view for the developer
//console.log('json= ' + JSON.stringify(newjson))
//console.log('length = ' + newjson.length)
var i;
//Start of xml file 'array'
var array = builder.create('array')
//Documents are being pulled through firebase in this case thier are 4
for (i = 0; i < newjson.length; i++) {
//Firebase collection format to output to console
var type = '',
value = ''
switch (newjson[i].type) {
case 'string':
type = 'string', value = newjson[i].stringvalue;
break;
case 'integer':
type = 'integer', value = newjson[i].integervalue;
break;
case 'real':
type = 'real', value = newjson[i].realvalue;
break;
case 'boolean':
type = newjson[i].booleanvalue.toString();
break;
default:
break;
} //XML format for console
array.e('dict')
.e('key', 'Key').up()
.e('string', newjson[i].name).up()
.e('key', 'Value').up()
.e([type]).r([value]).up()
//making xml readable
array.end({
pretty: true
});
newarray.push(array)
} //outputing xml to console
console.log(newarray.toString())
}
// firebase utils
var json = []
var db = admin.firestore();
// gathering the data from firebase collection
db.collection('xmltest')
.get()
.then((snapshot) => {
snapshot.forEach(doc => {
const data = {
'portalid': doc.data().portalid,
'name': doc.data().name,
'type': doc.data().type,
'integervalue': doc.data().integervalue,
'realvalue': doc.data().realvalue,
'booleanvalue': doc.data().booleanvalue,
'stringvalue': doc.data().stringvalue,
}
//pushing JSON to console
json.push(data)
})
// function to convert json to xml
CreateXML(json)
})
//catching errors when present
.catch((error) => {
console.log(JSON.stringify(error))
});
//Outputting xml to browser
var app = express();
app.get('/', function(req, res) {
res.set('Content-Type', 'text/xml');
res.send(array);
});
//Server start on 8888
var server = app.listen(8888, function() {
var host = server.address().address;
var port = server.address().port;
console.log("We're live on:", port);
});
// Firebase Database output
/*
{'portalid': '1111', 'name': 'showHomeIcon', 'booleanvalue': 'false', 'type':'boolean' },
{'portalid': '1111', 'name': 'motionResetPeriod', 'stringvalue': '1', 'type':'string' },
{'portalid': '1111', 'name': 'motionResetPeriod', 'integervalue': '2', 'type':'integer' },
{'portalid': '1111', 'name': 'motionResetPeriod', 'realvalue': '1.0', 'type':'real' },
]
*/
如果有人可以提供帮助,这是源代码,因为这已经困扰了我几天了。
-问题依据-
我正在尝试使用XML文件针对特定的应用程序自动更新iPad。我之前从未做过XML的工作,所以这对我作为初级开发人员来说是第一次。
我已经到了XML可以输出到控制台但无法将其输出到本地服务器的地步。
如果有人可以帮助我,将不胜感激。