Отображение XML-файла на локальном сервере с экспресс-JS - PullRequest
0 голосов
/ 23 октября 2018

//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.

Если бы кто-то мог помочь мне в этом, это было бывысоко ценится.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...