2013-10-21 48 views
0

我知道有很多类似的问题(用了2-3天,寻找解决方案) 但参考库如xml2json & json2xml 他们中的大多数是不什么即时寻找...XML节点给出错误

所以这里的问题是:我想从XML阅读和使用纯JavaScript的,不是jQuery的,没有图书馆,只是纯JavaScript将它保存到JSON对象。感谢您的任何帮助!

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 
+1

因此......您想解析XML ...... _without_ XML解析器吗?你的意思是你想要自己推出自己的XML解析器?这个问题的范围太广泛了 - 打开你参考的图书馆并阅读他们的代码来找出你自己的答案。 –

+0

xml文件不可能导致jquery的输出 - 没有'artist'字段 – SheetJS

回答

0

如果你不初始化你的fileData.title到一个字符串,但初始化成一个对象,这将与你的本地版本。 更改

"title":"non" to "title":{} 
+0

谢谢,这个问题解决了!为我节省了很多时间。 – Kiura

0

如果你想解析XML,你可以使用正则表达式:

var titles = xml.match(/<title>([^<]*)<\/title>/g).map(function(x) { return x.substring(7,x.length-8); })