我知道有很多类似的问题(花了2-3天寻找解决方案) 但是大多数都引用了诸如 xml2json 和&的 json2xml 这不是我想要的......
所以问题就出现了:我想阅读 XML 并使用纯 javascript 将其保存到 JSON 对象,而不是jQuery,而不是库,只是纯粹的JavaScript。谢谢你的帮助!
0)xml
<ipod>
<playlist>
<name>All</name>
<contents>
<song>
<title>Miley_Cyrus_-_We_Can't_Stop</title>
</song>
<song>
<title>Miley_Cyrus_-_Wrecking Ball</title>
</song>
</contents>
</playlist>
</ipod>
1)javascript //有错误
var fileData =
{
"title":"non"
};
var xmlhttp=new XMLHttpRequest();
xmlhttp.open("GET", '1.xml',false);
xmlhttp.send();
xml=xmlhttp.responseXML;
for (var index=0; index<2; index++)
{
fileData.title[index]=xml.getElementsByTagName("title")[index].childNodes[0].nodeValue;
console.log(fileData.title[index]);
}
//output:
//n
//o
2)jQuery //没有错误
var fileData =
{
"title":"non"
};
var xmlhttp=new XMLHttpRequest();
xmlhttp.open("GET", '1.xml',false);
xmlhttp.send();
xml=xmlhttp.responseXML;
fileData.artist = $(xml).find('artist');
for (var index=0; index<3; index++)
{
fileData.url[index]=fileData.url[index].textContent;
console.log(fileData.title[index]);
}
//output:
//Miley_Cyrus_-_We_Can't_Stop
//Miley_Cyrus_-_Wrecking Ball
答案 0 :(得分:0)
如果要解析xml,可以使用正则表达式:
var titles = xml.match(/<title>([^<]*)<\/title>/g).map(function(x) { return x.substring(7,x.length-8); })
答案 1 :(得分:0)
如果您没有将fileData.title初始化为字符串,但初始化为一个对象,这将与您的本机版本一起使用。 改变
"title":"non" to "title":{}