You can use following Javascript function to convert any DOM node into the relevant BadgerFish notation. You can convert any XML string into a DOM object using method described at Parse XML String into DOM with Javascript
Please find the hosted version of XML to Badgerfish converter at gogooog.com
function xml2bf(node) {
var json = {};
var cloneNS = function(ns) {
var nns = {};
for (var n in ns) {
if (ns.hasOwnProperty(n)) {
nns[n] = ns[n];
}
}
return nns;
};
var process = function (node, obj, ns) {
if (node.nodeType === 3) {
if (!node.nodeValue.match(/[\S]+/)) return;
if (obj["$"] instanceof Array) {
obj["$"].push(node.nodeValue);
} else if (obj["$"] instanceof Object) {
obj["$"] = [obj["$"], node.nodeValue];
} else {
obj["$"] = node.nodeValue;
}
} else if (node.nodeType === 1) {
var p = {};
var nodeName = node.nodeName;
for (var i = 0; node.attributes && i < node.attributes.length; i++) {
var attr = node.attributes[i];
var name = attr.nodeName;
var value = attr.nodeValue;
if (name === "xmlns") {
ns["$"] = value;
} else if (name.indexOf("xmlns:") === 0) {
ns[name.substr(name.indexOf(":") + 1)] = value;
} else {
p["@" + name] = value;
}
}
for (var prefix in ns) {
if (ns.hasOwnProperty(prefix)) {
p["@xmlns"] = p["@xmlns"] || {};
p["@xmlns"][prefix] = ns[prefix];
}
}
if (obj[nodeName] instanceof Array) {
obj[nodeName].push(p);
} else if (obj[nodeName] instanceof Object) {
obj[nodeName] = [obj[nodeName], p];
} else {
obj[nodeName] = p;
}
for (var j = 0; j < node.childNodes.length; j++) {
process(node.childNodes[j], p, cloneNS(ns));
}
} else if (node.nodeType === 9) {
for (var k = 0; k < node.childNodes.length; k++) {
process(node.childNodes[k], obj, cloneNS(ns));
}
}
};
process(node, json, {});
return json;
}