首页 > 解决方案 > 使用 express JS 在 localhost 服务器上显示 XML 文件

问题描述

//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 可以输出到控制台但无法将其输出到 localhost 服务器的程度。

如果有人可以帮助我,将不胜感激。

标签: xmlfirebaseexpress

解决方案


推荐阅读