xmlHelper.js 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. /*
  2. Small helper class to read/write from/to xml file.
  3. */
  4. var fs = require('fs');
  5. var xml2jsProcessors = require('xml2js/lib/processors');
  6. var xml2js = require('xml2js');
  7. module.exports = {
  8. readXmlAsJson: readXmlAsJson,
  9. writeJsonAsXml: writeJsonAsXml
  10. };
  11. /**
  12. * Read data from the xml file as JSON object.
  13. *
  14. * @param {String} filePath - absolute path to xml file
  15. * @param {Boolean} simplify - if set to true - cleanup resulting json
  16. * @return {Object} JSON object with the contents of the xml file
  17. */
  18. function readXmlAsJson(filePath, simplify) {
  19. var xmlData;
  20. var parsedData;
  21. var parserOptions = {};
  22. if (simplify) {
  23. parserOptions = {
  24. attrValueProcessors: [xml2jsProcessors.parseNumbers, xml2jsProcessors.parseBooleans],
  25. explicitArray: false,
  26. mergeAttrs: true,
  27. explicitRoot: false
  28. };
  29. }
  30. var xmlParser = new xml2js.Parser(parserOptions);
  31. try {
  32. xmlData = fs.readFileSync(filePath);
  33. xmlParser.parseString(xmlData, function(err, data) {
  34. if (data) {
  35. parsedData = data;
  36. }
  37. });
  38. } catch (err) {}
  39. return parsedData;
  40. }
  41. /**
  42. * Write JSON object as xml into the specified file.
  43. *
  44. * @param {Object} jsData - JSON object to write
  45. * @param {String} filePath - path to the xml file where data should be saved
  46. * @param {Object} options - xml options
  47. * @return {boolean} true - if data saved to file; false - otherwise
  48. */
  49. function writeJsonAsXml(jsData, filePath, options) {
  50. var xmlBuilder = new xml2js.Builder(options);
  51. var changedXmlData = xmlBuilder.buildObject(jsData);
  52. var isSaved = true;
  53. try {
  54. fs.writeFileSync(filePath, changedXmlData);
  55. } catch (err) {
  56. console.log(err);
  57. isSaved = false;
  58. }
  59. return isSaved;
  60. }