Skip to content
This repository was archived by the owner on Jan 7, 2021. It is now read-only.

Commit 976a158

Browse files
committed
Merge pull request #36 from o-nix/master
toXml() fails on a specific XML structure
2 parents 2e047ee + 29b9b18 commit 976a158

1 file changed

Lines changed: 21 additions & 11 deletions

File tree

lib/json2xml.js

Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,20 @@ module.exports = function toXml(json, xml) {
2020

2121
// First pass, extract strings only
2222
for (var i = 0; i < len; i++) {
23-
var key = keys[i];
24-
if (typeof(obj[key]) == 'string') {
25-
if (key == '$t') {
26-
xml += obj[key];
27-
} else {
28-
xml = xml.replace(/>$/, '');
29-
xml += ' ' + key + '="' + obj[key] + '">';
30-
}
23+
var key = keys[i], value = obj[key], isArray = Array.isArray(value);
24+
if (typeof(obj[key]) == 'string' || isArray) {
25+
var it = isArray ? value : [value];
26+
27+
it.forEach(function(subVal) {
28+
if (typeof(subVal) != 'object') {
29+
if (key == '$t') {
30+
xml += subVal;
31+
} else {
32+
xml = xml.replace(/>$/, '');
33+
xml += ' ' + key + '="' + subVal + '">';
34+
}
35+
}
36+
})
3137
}
3238
}
3339

@@ -39,9 +45,13 @@ module.exports = function toXml(json, xml) {
3945
var elems = obj[key];
4046
var l = elems.length;
4147
for (var j = 0; j < l; j++) {
42-
xml += '<' + key + '>';
43-
xml = toXml(elems[j], xml);
44-
xml += '</' + key + '>';
48+
var elem = elems[j];
49+
50+
if (typeof(elem) == 'object') {
51+
xml += '<' + key + '>';
52+
xml = toXml(elem, xml);
53+
xml += '</' + key + '>';
54+
}
4555
}
4656
} else if (typeof(obj[key]) == 'object') {
4757
xml += '<' + key + '>';

0 commit comments

Comments
 (0)