2016-10-22 4 views
1

Я пытаюсь использовать JavaScript для отображения данных из XML-файла. Мои данные не отображаются на веб-странице, и я не уверен, почему.Отображение данных из файла XML

enter image description here

Любая помощь/советы будут оценены. Мой код отображается ниже.

ПРИМЕЧАНИЕ. У меня нет опыта работы с XML, поэтому имейте в виду, что я совершенно новичок в этом.

<script> 
    var xmlData; 
    function loadXml() { 
     var filename = "CDLibrary.xml"; 
     var XMLhttp = new XMLHttpRequest(); 
     XMLhttp.open("GET", filename, true); 
     var ok = true; 
     try { 
      XMLhttp.send(); 
     } 
     catch(err) { 
      ok = false; 
      alert ("Database not found"); 
     } 
     if (ok) { 
      xmlData = XMLhttp.responseXML; 
      displayXml(xmlData); 
     } 
    } 
    function displayXml() { 
     var CdElements; 
     var CdTitle; 
     var count; 
     CdElements = xmlData.getElementsByTagName("CD"); 
     for (count = 0; count < CdElements.length; count=count+1) { 
      CdTitle = CdElements[count].getElementsByTagName("title"); 
      document.getElementById("output").innerHTML = document.getElementById("output").innerHTML + CdTitle[0].childNodes[0].nodeValue + "</br>"; 
     } 
    } 
</script> 

</head> 

<body> 
    <div> 
     <p id="output"> 
     </p> 
     <p id="buttons"> 
      <input type="button" id="btnDisplay" value="Display CDs" onclick="loadXml();"> 
    </div> 
</body> 

+0

http://www.w3schools.com/xml/tryit.asp?filename=tryajax_xml2 – Mahi

+0

Я попытался использовать это, но просто переключая файл XML и изменять элементы, чтобы быть нечестными не работает. –

+1

1 ==> 'onclick =" loadXml(); "' вместо 'onclick =" displayXml() "' 2 ==> добавить 'displayXml (xmlData)' после 'xmlData = XMLhttp.responseXML;' и test –

ответ

0
<html> 
    <head><title>Import XML Data</title></head> 
    <body> 
     <div> 
      <p id="output"> 
      </p> 
      <p id="buttons"> 
       <input type="button" id="btnDisplay" value="Display CDs" onclick="loadXml()"> 
     </div> 
<script> 
     var xmlData; 
     function loadXml() { 
      var filename = "CDLibary.xml"; 
      var XMLhttp = new XMLHttpRequest(); 
      XMLhttp.open("GET", filename, true); 
      var ok = true; 
      try { 
       XMLhttp.send(); 
      } 
      catch(err) { 
       ok = false; 
       alert ("Database not found"); 
      } 
      if (ok) { 
       xmlData = XMLhttp.responseXML; 
       displayXml(xmlData); 
      } 
     } 
     function displayXml(xmlDataBase) { 
      var CdElements; 
      var CdTitle; 
      var count; 
      CdElements = xmlDataBase.getElementsByTagName("CD"); 
      for (count = 0; count < CdElements.length; count=count+1) { 
       CdTitle = CdElements[count].getElementsByTagName("title"); 
       document.getElementById("output").innerHTML = document.getElementById("output").innerHTML + CdTitle[0].childNodes[0].nodeValue + "</br>"; 
      } 
     } 
    </script> 
    </body> 
    </html> 
+0

У меня такой же код, но он говорит, что база данных не найдена. Это потому, что мой скрипт находится в заголовках, а не в теле? –

+0

Не пытайтесь установить 'XMLhttp.open (" GET ", filename, true);' вместо false –

+0

и файл url должен быть прав и в том же домене –

0

Вы не используете УАК XMLDATA вместо этого вы будете использовать уаг xmlDataBase. Заменить вам код:

CdElements = xmlData.getElementsByTagName("CD"); 

И поскольку вы используете глобальные переменные XMLDATA, она доступна внутри функции displayXml, в этом случае нет необходимости в функции displayXml (xmlDataBase), если вы используете функцию displayXml() это будет быть достаточным.

+0

'xmlDataBase' - аргумент не avariable, и это не проблема –

+0

Я сделал изменение, и данные все еще не отображаются. –

0

Используя ссылку w3schools и меняя информацию и меняя каталог, я получил ее работу. Должна быть ошибка в шаблоне, за которым я слежу, спасибо всем за ваше время и усилия.

<html> 
    <style> 
    table,th,td { 
    border : 1px solid black; 
    border-collapse: collapse; 
    } 
    th,td { 
    padding: 5px; 
    } 
    </style> 
    <body> 


<button type="button" onclick="loadDoc()">Get my CD collection</button> 
<br><br> 
<table id="demo"></table> 

    <script> 
    function loadDoc() { 
    var xhttp = new XMLHttpRequest(); 
    xhttp.onreadystatechange = function() { 
    if (this.readyState == 4 && this.status == 200) { 
    myFunction(this); 
    } 
    }; 
    xhttp.open("GET", "CDLibrary.xml", true); 
    xhttp.send(); 
    } 
    function myFunction(xml) { 
    var i; 
    var xmlDoc = xml.responseXML; 
    var table="<tr><th>Artist</th><th>Title</th></tr>"; 
    var x = xmlDoc.getElementsByTagName("CD"); 
    for (i = 0; i <x.length; i++) { 
    table += "<tr><td>" + 
    x[i].getElementsByTagName("performer")[0].childNodes[0].nodeValue + 
    "</td><td>" + 
    x[i].getElementsByTagName("title")[0].childNodes[0].nodeValue + 
    "</td></tr>"; 
    } 
    document.getElementById("demo").innerHTML = table; 
    } 
    </script> 

    </body> 
    </html>