I am trying to convert a JSON file to XML using JavaScript. Until now, I used this library : https://github.com/abdolence/x2js ; It does give me the results, but not in the way I want them.
Here's what my JSON looks like :
{
"data": {
"key4":{
"sample8": [
{
"sample9":"val",
"sample10":"val"
},
{
"sample11":"val",
"sample12":"val"
},
{
"sample13":"val",
"sample14":"val"
}
]
}
}
}
Here's what the XML I get from the library looks like :
<data>
<key4>
<sample8>
<sample9>val</sample9>
<sample10>val</sample10>
</sample8>
<sample8>
<sample11>val</sample11>
<sample12>val</sample12>
</sample8>
<sample8>
<sample13>val</sample13>
<sample14>val</sample14>
</sample8>
</key4>
</data>
What I am trying to do is to add <item> ... </item>
as element name for every item in JSON array, so my expected end result looks like -
<data>
<key4>
<sample8>
<item>
<sample9>val</sample9>
<sample10>val</sample10>
</item>
<item>
<sample11>val</sample11>
<sample12>val</sample12>
</item>
<item>
<sample13>val</sample13>
<sample14>val</sample14>
</item>
</sample8>
</key4>
</data>
The following code (in PHP) works perfectly for me, and it adds the <item>
as well. -
function toXml($node, $array)
{
foreach ($array as $key => $value) {
if (is_array($value)) {
toXml($node->addChild(is_numeric($key) ? 'item' : $key), $value);
} else {
$node->addChild($key, $value);
}
}
}
$json = <<<JSON
... my json
JSON;
$jsonArr = json_decode($json, true);
$xml = new SimpleXMLElement('<data/>');
toXml($xml, array_shift($jsonArr));
echo $xml->asXML();
But I am supposed to do this in JS instead of PHP, so I am pretty confused on what should I do... I have read many posts/topics here & on internet, but none of them show how to do something like this; atleast the ones I read... What could be added so I get my desired result? Thanks in advance! :)
Via Active questions tagged javascript - Stack Overflow https://ift.tt/2FdjaAW
Comments
Post a Comment