//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' },
]
*/
Вот исходный код, если кто-то может помочь, который был бы благодарен, потому что он связывался со мной в течение нескольких дней.
- Основавопроса -
Я пытаюсь автоматически обновить iPad для определенного приложения, используя файлы XML.Я никогда раньше не работал с XML, поэтому для меня, как для младшего разработчика, это впервые.
Я получил его до такой степени, что XML мог выводить на консоль, но не мог заставить его выводить на сервер localhost.
Если бы кто-то мог помочь мне в этом, это было бывысоко ценится.