2015-06-02 25 views
0

所以我對XML和HTML相當陌生,並且一直在w3schools.com上查找指南。下面是與一個這樣的例子相關的兩個文件,它是關於解析代碼的。我想我對代碼的工作原理有所瞭解,並且在他們的在線「自己嘗試」的情況下,它會起作用。我的問題是,我下載文件後無法運行。也許我沒有設置好目錄,或者我完全錯過了一些東西。如何用HTML解析這個XML示例代碼?

XML代碼:

<?xml version="1.0" encoding="UTF-8"?> 
 
<CATALOG> 
 
\t <CD> 
 
\t \t <TITLE>Empire Burlesque</TITLE> 
 
\t \t <ARTIST>Bob Dylan</ARTIST> 
 
\t \t <COUNTRY>USA</COUNTRY> 
 
\t \t <COMPANY>Columbia</COMPANY> 
 
\t \t <PRICE>10.90</PRICE> 
 
\t \t <YEAR>1985</YEAR> 
 
\t </CD> 
 
\t <CD> 
 
\t \t <TITLE>Hide your heart</TITLE> 
 
\t \t <ARTIST>Bonnie Tyler</ARTIST> 
 
\t \t <COUNTRY>UK</COUNTRY> 
 
\t \t <COMPANY>CBS Records</COMPANY> 
 
\t \t <PRICE>9.90</PRICE> 
 
\t \t <YEAR>1988</YEAR> 
 
\t </CD> 
 
\t <CD> 
 
\t \t <TITLE>Greatest Hits</TITLE> 
 
\t \t <ARTIST>Dolly Parton</ARTIST> 
 
\t \t <COUNTRY>USA</COUNTRY> 
 
\t \t <COMPANY>RCA</COMPANY> 
 
\t \t <PRICE>9.90</PRICE> 
 
\t \t <YEAR>1982</YEAR> 
 
\t </CD> 
 
\t <CD> 
 
\t \t <TITLE>Still got the blues</TITLE> 
 
\t \t <ARTIST>Gary Moore</ARTIST> 
 
\t \t <COUNTRY>UK</COUNTRY> 
 
\t \t <COMPANY>Virgin records</COMPANY> 
 
\t \t <PRICE>10.20</PRICE> 
 
\t \t <YEAR>1990</YEAR> 
 
\t </CD> 
 
\t <CD> 
 
\t \t <TITLE>Eros</TITLE> 
 
\t \t <ARTIST>Eros Ramazzotti</ARTIST> 
 
\t \t <COUNTRY>EU</COUNTRY> 
 
\t \t <COMPANY>BMG</COMPANY> 
 
\t \t <PRICE>9.90</PRICE> 
 
\t \t <YEAR>1997</YEAR> 
 
\t </CD> 
 
\t <CD> 
 
\t \t <TITLE>One night only</TITLE> 
 
\t \t <ARTIST>Bee Gees</ARTIST> 
 
\t \t <COUNTRY>UK</COUNTRY> 
 
\t \t <COMPANY>Polydor</COMPANY> 
 
\t \t <PRICE>10.90</PRICE> 
 
\t \t <YEAR>1998</YEAR> 
 
\t </CD> 
 
\t <CD> 
 
\t \t <TITLE>Sylvias Mother</TITLE> 
 
\t \t <ARTIST>Dr.Hook</ARTIST> 
 
\t \t <COUNTRY>UK</COUNTRY> 
 
\t \t <COMPANY>CBS</COMPANY> 
 
\t \t <PRICE>8.10</PRICE> 
 
\t \t <YEAR>1973</YEAR> 
 
\t </CD> 
 
\t <CD> 
 
\t \t <TITLE>Maggie May</TITLE> 
 
\t \t <ARTIST>Rod Stewart</ARTIST> 
 
\t \t <COUNTRY>UK</COUNTRY> 
 
\t \t <COMPANY>Pickwick</COMPANY> 
 
\t \t <PRICE>8.50</PRICE> 
 
\t \t <YEAR>1990</YEAR> 
 
\t </CD> 
 
\t <CD> 
 
\t \t <TITLE>Romanza</TITLE> 
 
\t \t <ARTIST>Andrea Bocelli</ARTIST> 
 
\t \t <COUNTRY>EU</COUNTRY> 
 
\t \t <COMPANY>Polydor</COMPANY> 
 
\t \t <PRICE>10.80</PRICE> 
 
\t \t <YEAR>1996</YEAR> 
 
\t </CD> 
 
\t <CD> 
 
\t \t <TITLE>When a man loves a woman</TITLE> 
 
\t \t <ARTIST>Percy Sledge</ARTIST> 
 
\t \t <COUNTRY>USA</COUNTRY> 
 
\t \t <COMPANY>Atlantic</COMPANY> 
 
\t \t <PRICE>8.70</PRICE> 
 
\t \t <YEAR>1987</YEAR> 
 
\t </CD> 
 
\t <CD> 
 
\t \t <TITLE>Black angel</TITLE> 
 
\t \t <ARTIST>Savage Rose</ARTIST> 
 
\t \t <COUNTRY>EU</COUNTRY> 
 
\t \t <COMPANY>Mega</COMPANY> 
 
\t \t <PRICE>10.90</PRICE> 
 
\t \t <YEAR>1995</YEAR> 
 
\t </CD> 
 
\t <CD> 
 
\t \t <TITLE>1999 Grammy Nominees</TITLE> 
 
\t \t <ARTIST>Many</ARTIST> 
 
\t \t <COUNTRY>USA</COUNTRY> 
 
\t \t <COMPANY>Grammy</COMPANY> 
 
\t \t <PRICE>10.20</PRICE> 
 
\t \t <YEAR>1999</YEAR> 
 
\t </CD> 
 
\t <CD> 
 
\t \t <TITLE>For the good times</TITLE> 
 
\t \t <ARTIST>Kenny Rogers</ARTIST> 
 
\t \t <COUNTRY>UK</COUNTRY> 
 
\t \t <COMPANY>Mucik Master</COMPANY> 
 
\t \t <PRICE>8.70</PRICE> 
 
\t \t <YEAR>1995</YEAR> 
 
\t </CD> 
 
\t <CD> 
 
\t \t <TITLE>Big Willie style</TITLE> 
 
\t \t <ARTIST>Will Smith</ARTIST> 
 
\t \t <COUNTRY>USA</COUNTRY> 
 
\t \t <COMPANY>Columbia</COMPANY> 
 
\t \t <PRICE>9.90</PRICE> 
 
\t \t <YEAR>1997</YEAR> 
 
\t </CD> 
 
\t <CD> 
 
\t \t <TITLE>Tupelo Honey</TITLE> 
 
\t \t <ARTIST>Van Morrison</ARTIST> 
 
\t \t <COUNTRY>UK</COUNTRY> 
 
\t \t <COMPANY>Polydor</COMPANY> 
 
\t \t <PRICE>8.20</PRICE> 
 
\t \t <YEAR>1971</YEAR> 
 
\t </CD> 
 
\t <CD> 
 
\t \t <TITLE>Soulsville</TITLE> 
 
\t \t <ARTIST>Jorn Hoel</ARTIST> 
 
\t \t <COUNTRY>Norway</COUNTRY> 
 
\t \t <COMPANY>WEA</COMPANY> 
 
\t \t <PRICE>7.90</PRICE> 
 
\t \t <YEAR>1996</YEAR> 
 
\t </CD> 
 
\t <CD> 
 
\t \t <TITLE>The very best of</TITLE> 
 
\t \t <ARTIST>Cat Stevens</ARTIST> 
 
\t \t <COUNTRY>UK</COUNTRY> 
 
\t \t <COMPANY>Island</COMPANY> 
 
\t \t <PRICE>8.90</PRICE> 
 
\t \t <YEAR>1990</YEAR> 
 
\t </CD> 
 
\t <CD> 
 
\t \t <TITLE>Stop</TITLE> 
 
\t \t <ARTIST>Sam Brown</ARTIST> 
 
\t \t <COUNTRY>UK</COUNTRY> 
 
\t \t <COMPANY>A and M</COMPANY> 
 
\t \t <PRICE>8.90</PRICE> 
 
\t \t <YEAR>1988</YEAR> 
 
\t </CD> 
 
\t <CD> 
 
\t \t <TITLE>Bridge of Spies</TITLE> 
 
\t \t <ARTIST>T'Pau</ARTIST> 
 
\t \t <COUNTRY>UK</COUNTRY> 
 
\t \t <COMPANY>Siren</COMPANY> 
 
\t \t <PRICE>7.90</PRICE> 
 
\t \t <YEAR>1987</YEAR> 
 
\t </CD> 
 
\t <CD> 
 
\t \t <TITLE>Private Dancer</TITLE> 
 
\t \t <ARTIST>Tina Turner</ARTIST> 
 
\t \t <COUNTRY>UK</COUNTRY> 
 
\t \t <COMPANY>Capitol</COMPANY> 
 
\t \t <PRICE>8.90</PRICE> 
 
\t \t <YEAR>1983</YEAR> 
 
\t </CD> 
 
\t <CD> 
 
\t \t <TITLE>Midt om natten</TITLE> 
 
\t \t <ARTIST>Kim Larsen</ARTIST> 
 
\t \t <COUNTRY>EU</COUNTRY> 
 
\t \t <COMPANY>Medley</COMPANY> 
 
\t \t <PRICE>7.80</PRICE> 
 
\t \t <YEAR>1983</YEAR> 
 
\t </CD> 
 
\t <CD> 
 
\t \t <TITLE>Pavarotti Gala Concert</TITLE> 
 
\t \t <ARTIST>Luciano Pavarotti</ARTIST> 
 
\t \t <COUNTRY>UK</COUNTRY> 
 
\t \t <COMPANY>DECCA</COMPANY> 
 
\t \t <PRICE>9.90</PRICE> 
 
\t \t <YEAR>1991</YEAR> 
 
\t </CD> 
 
\t <CD> 
 
\t \t <TITLE>The dock of the bay</TITLE> 
 
\t \t <ARTIST>Otis Redding</ARTIST> 
 
\t \t <COUNTRY>USA</COUNTRY> 
 
\t \t <COMPANY>Atlantic</COMPANY> 
 
\t \t <PRICE>7.90</PRICE> 
 
\t \t <YEAR>1987</YEAR> 
 
\t </CD> 
 
\t <CD> 
 
\t \t <TITLE>Picture book</TITLE> 
 
\t \t <ARTIST>Simply Red</ARTIST> 
 
\t \t <COUNTRY>EU</COUNTRY> 
 
\t \t <COMPANY>Elektra</COMPANY> 
 
\t \t <PRICE>7.20</PRICE> 
 
\t \t <YEAR>1985</YEAR> 
 
\t </CD> 
 
\t <CD> 
 
\t \t <TITLE>Red</TITLE> 
 
\t \t <ARTIST>The Communards</ARTIST> 
 
\t \t <COUNTRY>UK</COUNTRY> 
 
\t \t <COMPANY>London</COMPANY> 
 
\t \t <PRICE>7.80</PRICE> 
 
\t \t <YEAR>1987</YEAR> 
 
\t </CD> 
 
\t <CD> 
 
\t \t <TITLE>Unchain my heart</TITLE> 
 
\t \t <ARTIST>Joe Cocker</ARTIST> 
 
\t \t <COUNTRY>USA</COUNTRY> 
 
\t \t <COMPANY>EMI</COMPANY> 
 
\t \t <PRICE>8.20</PRICE> 
 
\t \t <YEAR>1987</YEAR> 
 
\t </CD> 
 
</CATALOG>

(這被保存爲cd_catalog.xml)

HTML表代碼:

<!DOCTYPE html> 
 
<html lang="en"> 
 
<head> 
 
    <meta charset="UTF-8"> 
 
    <meta http-equiv="X-UA-Compatible" content="IE=Edge"> 
 
    <style> 
 
     table, th, td { 
 
      border: 1px solid black; 
 
      border-collapse: collapse; 
 
     } 
 

 
     th, td { 
 
      padding: 10px; 
 
     } 
 
    </style> 
 
</head> 
 
<body> 
 

 
    <script> 
 
     if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari 
 
      xmlhttp = new XMLHttpRequest(); 
 
     } 
 
     else {// code for IE6, IE5 
 
      xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
 
     } 
 
     xmlhttp.open("GET", "cd_catalog.xml", false); 
 
     xmlhttp.send(); 
 
     xmlDoc = xmlhttp.responseXML; 
 

 
     document.write("<table><tr><th>Artist</th><th>Title</th></tr>"); 
 
     var x = xmlDoc.getElementsByTagName("CD"); 
 
     for (i = 0; i < x.length; i++) { 
 
      document.write("<tr><td>"); 
 
      document.write(x[i].getElementsByTagName("ARTIST")[0].childNodes[0].nodeValue); 
 
      document.write("</td><td>"); 
 
      document.write(x[i].getElementsByTagName("TITLE")[0].childNodes[0].nodeValue); 
 
      document.write("</td></tr>"); 
 
     } 
 
     document.write("</table>"); 
 
    </script> 
 

 
</body> 
 
</html>

(這被保存爲display_table.html)

如果我失去了一些東西,請告訴我,我一直在試圖研究它自己的天。

+0

在控制檯中是否出現錯誤?你是從Web服務器提供文件,還是僅在文件夾中? –

+0

我只是把它們放在一個文件夾中。爲了測試它,我剛剛嘗試在IE中運行.html文件,但每次我只做一個空白的屏幕時就會打開。 – calebben3

+0

嘗試在Chrome中運行它,按開發者控制檯(新的最好的朋友)的F12並查看它是否顯示安全異常。您無法使用JavaScript從文件系統加載文件,以防止網站只讀取您的數據,因此如果您需要這樣做,最簡單的方法就是在本地安裝Apache。 –

回答

0

您需要使用`onreadystatechange'-事件:

xmlHttp.onreadystatechange = function() { 
    if (xmlHttp.readyState == 4) { 
     xmlDoc = xmlhttp.responseXML; 

    document.write("<table><tr><th>Artist</th><th>Title</th></tr>"); 
    var x = xmlDoc.getElementsByTagName("CD"); 
    for (i = 0; i < x.length; i++) { 
     document.write("<tr><td>"); 
     document.write(x[i].getElementsByTagName("ARTIST")[0].childNodes[0].nodeValue); 
     document.write("</td><td>"); 
     document.write(x[i].getElementsByTagName("TITLE")[0].childNodes[0].nodeValue); 
     document.write("</td></tr>"); 
    } 
    document.write("</table>"); 

    } 
}; 

如果你不等待這個事件和這個狀態,xmlhttp.responseXML將是空的。

+0

更好地添加評論而不是downvote正確的一段代碼。 –

-1

我只是測試腳本,嘗試從cd_catalog.xml刪除

<?xml version="1.0" encoding="UTF-8"?> 

+0

我試過這個,但我不相信它是基於Evan在評論中說的。 JS不會允許它,因爲它們是出於安全原因在本地存儲的文件。 – calebben3

+0

這隻會使其無效XML。 –