I have a large XML DOM Object which was parsed via jQuery's $.parseXML function, returning a JavaScript DOM Object. With this XML I want to create an normal JavaScript Object with the following structure:
{
name: 'my_tree',
children: [
{ name: 'hello' },
{ name: 'wat' },
{
name: 'child_folder',
children: [
{
name: 'child_folder',
children: [
{ name: 'hello' },
{ name: 'wat' }
]
},
{ name: 'hello' },
{ name: 'wat' },
{
name: 'child_folder',
children: [
{ name: 'hello' },
{ name: 'wat' }
]
}
]
}
]
}
The original XML would look something like this:
<my_tree>
<hello></hello>
<wat></wat>
<child_folder>
<child_folder>
<hello></hello>
<wat></wat>
</child_folder>
<hello></hello>
<wat></wat>
<child_folder>
<hello></hello>
<wat></wat>
</child_folder>
</child_folder>
</my_tree>
I have tried something like the code below, but to no avail:
function xmlDomToObject(domObject) {
var result = {children: []};
for (var i = 0; i < domObject.length; i++) {
if (domObject[i].nodeName == "#text") {
continue;
}
result['name'] = domObject[i].nodeName;
result['children'].push(xmlDomToObject(domObject[i].childNodes));
}
return result;
}
var xmlObject = xmlDomToObject(xmlDomObject.childNodes);