obj2xml.js 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.obj2xml = void 0;
  4. const formatObjKey_1 = require("./formatObjKey");
  5. function type(params) {
  6. return Object.prototype.toString
  7. .call(params)
  8. .replace(/(.*? |])/g, '')
  9. .toLowerCase();
  10. }
  11. function obj2xml(obj, options) {
  12. let s = '';
  13. if (options && options.headers) {
  14. s = '<?xml version="1.0" encoding="UTF-8"?>\n';
  15. }
  16. if (options && options.firstUpperCase) {
  17. obj = formatObjKey_1.formatObjKey(obj, 'firstUpperCase');
  18. }
  19. if (type(obj) === 'object') {
  20. Object.keys(obj).forEach(key => {
  21. // filter undefined or null
  22. if (type(obj[key]) !== 'undefined' && type(obj[key]) !== 'null') {
  23. if (type(obj[key]) === 'string' || type(obj[key]) === 'number') {
  24. s += `<${key}>${obj[key]}</${key}>`;
  25. }
  26. else if (type(obj[key]) === 'object') {
  27. s += `<${key}>${obj2xml(obj[key])}</${key}>`;
  28. }
  29. else if (type(obj[key]) === 'array') {
  30. s += obj[key]
  31. .map(keyChild => `<${key}>${obj2xml(keyChild)}</${key}>`)
  32. .join('');
  33. }
  34. else {
  35. s += `<${key}>${obj[key].toString()}</${key}>`;
  36. }
  37. }
  38. });
  39. }
  40. else {
  41. s += obj.toString();
  42. }
  43. return s;
  44. }
  45. exports.obj2xml = obj2xml;