XML 애플리케이션

이 장에서는 XML, HTTP, DOM 및 JavaScript를 사용하여 HTML 애플리케이션을 구현하는 방법을 설명합니다。

사용하는 XML 문서

이 장에서는 "music_list.xml"의 XML 파일입니다。

XML 데이터를 HTML 테이블에 표시합니다

이 예제에서는 각 <TRACK> 요소를 순회하며, 그런 다음 HTML 테이블에 <ARTIST>과 <TITLE> 요소의 값을 표시합니다:

예제

<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", "music_list.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 = table;
}
</script>
</body>
</html>

직접 시도해 보세요

JavaScript와 XML DOM의 사용에 대한更多信息는 다음을 참조하세요: DOM 개요

HTML div 요소에 첫 번째 곡 표시

이 예제는 id="displayMUSIC"의 HTML 요소에 첫 번째 곡을 표시하는 함수를 사용합니다:

예제

displayMUSIC(0);
function displayMUSIC(i) {
  var xmlhttp = new XMLHttpRequest();
  xmlhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
      myFunction(this, i);
    }
  };
  xmlhttp.open("GET", "music_list.xml", true);
  xmlhttp.send();
}
function myFunction(xml, i) {
  var xmlDoc = xml.responseXML; 
  x = xmlDoc.getElementsByTagName("TRACK");
  document.getElementById("showMUSIC").innerHTML =
  "<ul>" + 
  "<li>곡목:" +
  x[i].getElementsByTagName("TITLE")[0].childNodes[0].nodeValue + "</li>" +
  "<li>아티스트: " +
  x[i].getElementsByTagName("ARTIST")[0].childNodes[0].nodeValue + "</li>" +
  "<li>앨범: " +
  x[i].getElementsByTagName("ALBUM")[0].childNodes[0].nodeValue + "</li>" +
  "<li>국가: " +
  x[i].getElementsByTagName("COUNTRY")[0].childNodes[0].nodeValue + "</li>" +
  "<li>회사: " +
  x[i].getElementsByTagName("COMPANY")[0].childNodes[0].nodeValue + "</li>" +
  "<li>연도: " + 
  x[i].getElementsByTagName("YEAR")[0].childNodes[0].nodeValue + "</li>" +
  "</ul>";
}

직접 시도해 보세요

곡 간 네비게이션

이 예제에서 곡 간의 네비게이션을 위해 next()와 previous() 함수를 추가하세요:

예제

function next() {
  // 마지막 곡에 도달하지 않았다면 다음 곡을 표시
   if (i < x.length-1) {
    i++;
    displayMUSIC(i);
  }
}
function previous() {
  // 첫 번째 곡에 도달하지 않았다면 이전 곡을 표시
   if (i > 0) {
  i--;
  displayMUSIC(i);
  }
} 

직접 시도해 보세요

곡 클릭 시 앨범 정보 표시

이 예제는 사용자가 특정 곡을 클릭할 때 앨범 정보를 어떻게 표시하는지 보여줍니다:

예제

function displayMUSIC(i) {
  document.getElementById("showMUSIC").innerHTML =
  "<ul>" + 
  "<li>곡목:" +
  x[i].getElementsByTagName("TITLE")[0].childNodes[0].nodeValue + "</li>" +
  "<li>아티스트: " +
  x[i].getElementsByTagName("ARTIST")[0].childNodes[0].nodeValue + "</li>" +
  "<li>앨범: " +
  x[i].getElementsByTagName("ALBUM")[0].childNodes[0].nodeValue + "</li>" +
  "<li>국가: " +
  x[i].getElementsByTagName("COUNTRY")[0].childNodes[0].nodeValue + "</li>" +
  "<li>회사: " +
  x[i].getElementsByTagName("COMPANY")[0].childNodes[0].nodeValue + "</li>" +
  "<li>연도: " + 
  x[i].getElementsByTagName("YEAR")[0].childNodes[0].nodeValue + "</li>" +
  "</ul>";
}

직접 시도해 보세요