我想将JSON对象转换为XML String,但我无法找到合适的方法。 我在https://gist.github.com/c4milo/3738875找到了一个名为json2xml的简洁小jQuery插件,但它没有逃脱数据。
如何正确转义数据,以便浏览器的XML解析器能够正常工作?
答案 0 :(得分:2)
您可以尝试这个小型库http://code.google.com/p/x2js/
答案 1 :(得分:1)
没有独特的方法可以做到这一点。您应该只使用带有模式的XML,而JSON没有这样的模式。天真地做任何这样的转变都可能会破裂。
为什么不直接使用XML或JSON?
答案 2 :(得分:1)
答案 3 :(得分:0)
您可以在代码中使用此函数将js中的JSON转换为XML
var json2xml =函数(o){
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;
};
您将获得XML DOM作为回报,因此您需要序列化
所以主要
var xmlDOM = json2xml(eval(jsonObj));
var oSerializer = new XMLSerializer();
var sXML = oSerializer.serializeToString(xmlDOM);