json2xml.js 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. /**
  2. * This work is licensed under Creative Commons GNU LGPL License.
  3. * License:
  4. * Version: 0.9
  5. * Author: Stefan Goessner/2006
  6. * Web: http://goessner.net/
  7. */
  8. function addIndSpace(ind, deep) {
  9. for (var i = 0; i < deep; i++) {
  10. ind += ' ';
  11. }
  12. return ind;
  13. }
  14. function toXml(v, name, ind, deep) {
  15. var xml = "";
  16. if (v instanceof Array) {
  17. for (var i = 0, n = v.length; i < n; i++) {
  18. xml += addIndSpace(ind, deep) + toXml(v[i], name, ind, deep + 1);
  19. }
  20. }
  21. else if (typeof (v) == "object") {
  22. var hasChild = false;
  23. xml += addIndSpace(ind, deep) + "<" + name;
  24. for (var m in v) {
  25. if (m.charAt(0) == "-")
  26. xml += " " + m.substr(1) + "=\"" + v[m].toString() + "\"";
  27. else
  28. hasChild = true;
  29. }
  30. xml += hasChild ? ">" : " />";
  31. if (hasChild) {
  32. for (var m in v) {
  33. if (m == "#text")
  34. xml += v[m];
  35. else if (m == "#cdata")
  36. xml += "<![CDATA[" + v[m] + "]]>";
  37. else if (m.charAt(0) != "-")
  38. xml += toXml(v[m], m, ind, deep + 1);
  39. }
  40. xml += addIndSpace(ind, deep) + "</" + name + ">";
  41. }
  42. else {
  43. // xml += addIndSpace(ind, deep);
  44. }
  45. }
  46. else {
  47. xml += addIndSpace(ind, deep) + "<" + name + ">" + v.toString() + "</" + name + ">";
  48. }
  49. return xml;
  50. }
  51. ;
  52. function lfJson2Xml(o) {
  53. var xmlStr = "";
  54. for (var m in o) {
  55. xmlStr += toXml(o[m], m, "\t\n", 0);
  56. }
  57. return xmlStr;
  58. }
  59. export { lfJson2Xml };