我试图将JSON转换为XML,但没有得到确切的输出。在我的JSON中有数组对象,它不转换为XML数组。主要是数组对象未按预期转换为XML
var InputJSON = "{"body":{"entry": [{ "fullURL" : "abcd","Resource": "1234"},{ "fullURL" : "efgh","Resource": "5678"}]}}";
var output = eval("OBJtoXML("+InputJSON+");")
function OBJtoXML(obj) {
var xml = '';
for (var prop in obj) {
xml += "<" + prop + ">";
if(obj[prop] instanceof Array) {
for (var array in obj[prop]) {
xml += OBJtoXML(new Object(obj[prop][array]));
}
} else if (typeof obj[prop] == "object") {
xml += OBJtoXML(new Object(obj[prop]));
} else {
xml += obj[prop];
}
xml += "</" + prop + ">";
}
var xml = xml.replace(/<\/?[0-9]{1,}>/g,'');
return xml
}
实际输出:
<body>
<entry>
<fullURL>abcd</fullURL>
<Resource>1234</Resource>
<fullURL>efgh</fullURL>
<Resource>5678</Resource>
</entry>
</body>
预期输出:
<body>
<entry>
<fullURL>abcd</fullURL>
<Resource>1234</Resource>
</entry>
<entry>
<fullURL>efgh</fullURL>
<Resource>5678</Resource>
</entry>
</body>
请指导我,如果我从代码中缺少任何东西,以获得我的预期结果
8条答案
按热度按时间ep6jt1vc1#
将
OBJtoXML
函数替换为lskq00tm2#
使用xml-js lib
https://codesandbox.io/s/xml-json-forked-zgit4?file=/src/index.js:97-103
:)
bcs8qyzn3#
这里有几个问题,对于初学者来说,这里的JSON字符串变量要么需要转义它的引号。或者用单引号括起来。例如:
接下来,这里不需要使用
eval
,当在JavaScript中使用JSON时,应该使用JSON.parse
现在我们来看看这个问题的核心,为什么
entry
只出现一次?您遇到的问题是xml += "<" + prop + ">";
和xml += "</" + prop + ">";
在每个属性中只发生一次。可能的解决方案如下所示:zlwx9yxi4#
Xml-to-json库有方法
jsonToXml(json)
和xmlToJson(xml)
。https://xmltojson.github.io
w3nuxt5m5#
zte4gxcn6#
6uxekuva7#
mnemlml88#
Object/Array到XML转换器
下面的解决方案可以将JS变量转换为(非缩进的)XML字符串。它支持列表(数组)和对象。
objectToXml(object)
创建具有单个根元素的有效XML。variableToXml(variable, 'listElementName')
。在本例中,必须将列表元素的标记名称作为第二个参数传递。输入变量
输出XML(美化)
Demo