Aplikacje XML

Ten rozdział pokazuje demonstrację aplikacji HTML używającej XML, HTTP, DOM oraz JavaScript.

używanego dokumentu XML

W tym rozdziale użyjemy dokumentu XML o nazwie "music_list.xml" XML plik.

Wyświetlanie danych XML w tabeli HTML

Przykład przechodzenia przez każdy element <TRACK> i wyświetlania wartości elementów <ARTIST> i <TITLE> w tabeli HTML:

Przykład

<html>
<body>
<table id="demo"></table>
<script>
function loadXMLDoc() {
   var xmlhttp = new XMLHttpRequest();
  xmlhttp.onreadystatechange =  function() {
    if (this.readyState == 4 && this.status == 200) {
      myFunction(this);
     }
  };
  xmlhttp.open("GET", "lista_muzyki.xml", true);
   xmlhttp.send();
}
function myFunction(xml) {
  var i;
   var xmlDoc = xml.responseXML;
  var table="<tr><th>艺术家</th><th>曲目</th></tr>";
   var x = xmlDoc.getElementsByTagName("TRACK");
  for (i = 0; i <x.length;  i++) { 
    table += "<tr><td>" +
    x[i].getElementsByTagName("ARTIST")[0].childNodes[0].nodeValue  +
    "</td><td>" +
    x[i].getElementsByTagName("TITLE")[0].childNodes[0].nodeValue  +
    "</td></tr>";
  }
   document.getElementById("demo").innerHTML = tabela;
}
</script>
</body>
</html>

Spróbuj sam

Dla więcej informacji na temat użycia JavaScript i XML DOM, odwiedź Podstawy DOM.

Wyświetlanie pierwszej piosenki w elemencie div HTML

W tym przykładzie używamy funkcji, aby wyświetlić pierwszą piosenkę w elemencie HTML o id="displayMUSIC":

Przykład

wyświetlMUZYKĘ(0);
function wyświetlMUZYKĘ(i) {
  var xmlhttp = new XMLHttpRequest();
  xmlhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
      mojaFunkcja(this, i);
    }
  };
  xmlhttp.open("GET", "lista_muzyki.xml", true);
  xmlhttp.send();
}
function mojaFunkcja(xml, i) {
  var xmlDoc = xml.responseXML; 
  x = xmlDoc.getElementsByTagName("Ścieżka");
  document.getElementById("pokażMUZYKĘ").innerHTML =
  "<ul>" + 
  "<li>Utwór: " +
  x[i].getElementsByTagName("Tytuł")[0].childNodes[0].nodeValue + "</li>" +
  "<li>Artysta: " +
  x[i].getElementsByTagName("ARTIST")[0].childNodes[0].nodeValue + "</li>" +
  "<li>Album: " +
  x[i].getElementsByTagName("ALBUM")[0].childNodes[0].nodeValue + "</li>" +
  "<li>Kraj: " +
  x[i].getElementsByTagName("COUNTRY")[0].childNodes[0].nodeValue + "</li>" +
  "<li>Firma: " +
  x[i].getElementsByTagName("COMPANY")[0].childNodes[0].nodeValue + "</li>" +
  "<li>Rok: " + 
  x[i].getElementsByTagName("YEAR")[0].childNodes[0].nodeValue + "</li>" +
  "</ul>";
}

Spróbuj sam

Nawigacja między utworami

Aby nawigować między utworami w przykładzie powyżej, dodaj funkcje next() i previous():

Przykład

function następny() {
  // Wyświetl następny utwór, chyba że jest to ostatni utwór
   if (i < x.length-1) {
    i++;
    wyświetlMUZYKĘ(i);
  }
}
function poprzedni() {
  // Wyświetl poprzedni utwór, chyba że jest to pierwszy utwór
   if (i > 0) {
  i--;
  wyświetlMUZYKĘ(i);
  }
} 

Spróbuj sam

Wyświetlanie informacji o albumie po kliknięciu na utwór

Ostatni przykład pokazuje, jak wyświetlić informacje o albumie po kliknięciu na utwór:

Przykład

function wyświetlMUZYKĘ(i) {
  document.getElementById("pokażMUZYKĘ").innerHTML =
  "<ul>" + 
  "<li>Utwór: " +
  x[i].getElementsByTagName("Tytuł")[0].childNodes[0].nodeValue + "</li>" +
  "<li>Artysta: " +
  x[i].getElementsByTagName("ARTIST")[0].childNodes[0].nodeValue + "</li>" +
  "<li>Album: " +
  x[i].getElementsByTagName("ALBUM")[0].childNodes[0].nodeValue + "</li>" +
  "<li>Kraj: " +
  x[i].getElementsByTagName("COUNTRY")[0].childNodes[0].nodeValue + "</li>" +
  "<li>Firma: " +
  x[i].getElementsByTagName("COMPANY")[0].childNodes[0].nodeValue + "</li>" +
  "<li>Rok: " + 
  x[i].getElementsByTagName("YEAR")[0].childNodes[0].nodeValue + "</li>" +
  "</ul>";
}

Spróbuj sam