What is the best javascript function/plugin/library to convert a XML string to JSON.
I found that tool : http://www.thomasfrank.se/xml_to_json.html, but it does not like strings starting with 0
. i.e.: 005321
get converted to 2769
(not cool :( )
My question, what is the best javascript function/plugin/library to convert a XML to JSON?
EDIT : Someone tried one that works fine?
To convert XML text to JavaScript object, use xml2js() . To convert XML text to JSON text, use xml2json() .
To convert an XML document to JSON, follow these steps: Select the XML to JSON action from the Tools > JSON Tools menu. Choose or enter the Input URL of the XML document. Choose the path of the Output file that will contain the resulting JSON document.
Convert String to JSON Using eval() The eval() function in JavaScript is used to take an expression and return the string. As a result, it can be used to convert the string into JSON.
This function has worked pretty well for me:
xmlToJson = function(xml) {
var obj = {};
if (xml.nodeType == 1) {
if (xml.attributes.length > 0) {
obj["@attributes"] = {};
for (var j = 0; j < xml.attributes.length; j++) {
var attribute = xml.attributes.item(j);
obj["@attributes"][attribute.nodeName] = attribute.nodeValue;
}
}
} else if (xml.nodeType == 3) {
obj = xml.nodeValue;
}
if (xml.hasChildNodes()) {
for (var i = 0; i < xml.childNodes.length; i++) {
var item = xml.childNodes.item(i);
var nodeName = item.nodeName;
if (typeof (obj[nodeName]) == "undefined") {
obj[nodeName] = xmlToJson(item);
} else {
if (typeof (obj[nodeName].push) == "undefined") {
var old = obj[nodeName];
obj[nodeName] = [];
obj[nodeName].push(old);
}
obj[nodeName].push(xmlToJson(item));
}
}
}
return obj;
}
Implementation:
var jsonText = JSON.stringify(xmlToJson(xmlDoc)); // xmlDoc = xml dom document
Another small library for XML <=> JSON is https://github.com/abdmob/x2js
If you're willing to use jQuery, there is:
http://www.fyneworks.com/jquery/xml-to-json/
$.get("http://jfcoder.com/test.xml.php", function(xml){
var json = $.xml2json(xml);
$('pre').html(JSON.stringify(json)); // To show result in the browser
});
Using:
<nums>
<num>00597</num>
<num>0059</num>
<num>5978</num>
<num>5.978</num>
</nums>
Outputs:
{"num":["00597","0059","5978","5.978"]}
http://jfcoder.com/test.php
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With