【发布时间】:2018-04-16 11:23:47
【问题描述】:
我正在尝试将 XML 转换为 JSON。我面临的挑战是我的 xml 在所有标记中都将 @attributes 名称作为“值”。在将 xml 转换为 JSON 时,我正在使用以下代码。
var xml = "<Message><id value="123"></id><type value="Test"></type></Message>"
var json = XMLtoJSON(xml, ["type", "space", "xmlns", "html"]);
var result = JSON.stringify(json)
function XMLtoJSON(xml, ignored) {
var r, children = xml.*, attributes = xml.@*, length = children.length();
if(length == 0) {
r = xml.toString();
} else if(length == 1) {
var text = xml.text().toString();
if(text) {
r = text;
}
}
if(r == undefined) {
r = {};
for each (var child in children) {
var name = child.localName();
var json = XMLtoJSON(child, ignored);
var value = r[name];
if(value) {
if(value.length) {
value.push(json);
} else {
r[name] = [value, json]
}
} else {
r[name] = json;
}
}
}
if(attributes.length()) {
var a = {}, c = 0;
for each (var attribute in attributes) {
var name = attribute.localName();
if(ignored && ignored.indexOf(name) == -1) {
a["_" + name] = attribute.toString();
c ++;
}
}
if(c) {
if(r) a._ = r;
return a;
}
}
return r;
}
输入 XML:
<Message><id value="123"></id><type value="Test"></type></Message>
实际输出:
{"id":{"_value":"123"},"type":{"_value":"Test"}}
预期输出:
{"id":"123","type":"Test"}
指导我在哪里缺少获得预期输出的部分。
问候, nkn1189
【问题讨论】:
-
那不是有效的 JavaScript。
xml.*应该做什么? -
嗨,Str,我正在使用一些特定于我的应用程序的自定义 javascript,它提供的输出没有任何错误。 XML.* 将给出 XML 的子节点
标签: javascript json xml