使用javascript将JSON对象转换为XML
我想将JSON对象转换为XML字符串,但我想不出正确的方法。 我发现了一个整洁的jQuery插件,名为json2xml,但它并没有逃逸数据使用javascript将JSON对象转换为XML,javascript,xml,json,Javascript,Xml,Json,我想将JSON对象转换为XML字符串,但我想不出正确的方法。 我发现了一个整洁的jQuery插件,名为json2xml,但它并没有逃逸数据 如何正确地转义数据,以便浏览器的XML解析器能够正常工作?没有唯一的方法可以做到这一点。您应该只将XML与模式一起使用,而JSON没有这样的模式。任何这样的转变如果天真地完成,都可能会失败 为什么不直接使用XML或JSON呢?你可以试试这个小程序库你可以使用google提供的名为x2js.js的外部js 你可以在这里看到演示 您可以在代码中使用此函数将JSO
如何正确地转义数据,以便浏览器的XML解析器能够正常工作?没有唯一的方法可以做到这一点。您应该只将XML与模式一起使用,而JSON没有这样的模式。任何这样的转变如果天真地完成,都可能会失败
为什么不直接使用XML或JSON呢?你可以试试这个小程序库你可以使用google提供的名为x2js.js的外部js 你可以在这里看到演示
您可以在代码中使用此函数将JSON转换为js中的XML
var json2xml=函数(o){
转换只是为了将XML与XSLT结合使用……这不是我的想法。服务器端脚本只输出JSON,我必须以某种方式将响应转换为有效的XML。这可行吗?当然可行。生成XML并不难,特别是当您有可用的DOM实现时(我会避免产生一个字符串,而仅仅是为了将它输入到解析器中一次)。但是,我不会使用您在网站上给出的方法,而是尝试进行/语义/转换。毕竟,您希望生成的XML根据某种模式是有效的。虽然此链接可以回答问题,但最好在此处包含答案的基本部分,并提供链接供参考。L如果链接页面发生更改,则仅使用墨水的答案可能会无效。虽然此链接可能会回答问题,但最好在此处包含答案的基本部分,并提供链接供参考。如果链接页面发生更改,则仅使用链接的答案可能会无效。
var tab = "\t";
var toXml = function (v, name, ind) {
var xml = "";
if (v instanceof Array) {
for (var i = 0, n = v.length; i < n; i++)
xml += ind + toXml(v[i], name, ind + "\t") + "\n";
}
else if (typeof (v) == "object") {
var hasChild = false;
xml += ind + "<" + name;
for (var m in v) {
if (m.charAt(0) == "@")
xml += " " + m.substr(1) + "=\"" + v[m].toString() + "\"";
else
hasChild = true;
}
xml += hasChild ? ">" : "/>";
if (hasChild) {
for (var m in v) {
if (m == "#text")
xml += v[m];
else if (m == "#cdata")
xml += "<![CDATA[" + v[m] + "]]>";
else if (m.charAt(0) != "@")
xml += toXml(v[m], m, ind + "\t");
}
xml += (xml.charAt(xml.length - 1) == "\n" ? ind : "") + "</" + name + ">";
}
}
else {
xml += ind + "<" + name + ">" + v.toString() + "</" + name + ">";
}
}
return xml;
};
var xmlDOM = json2xml(eval(jsonObj));
var oSerializer = new XMLSerializer();
var sXML = oSerializer.serializeToString(xmlDOM);