2013-10-21 49 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); })