0

XMLファイルを読み取って表示する次のコードを作成しましたが、機能しません。

誰かが私が間違っているところを教えてもらえますか? XML を読み込んで表示してみます。

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", "books.xml", false);
xmlhttp.send();
xmlDoc = xmlhttp.responseXML;

var tbl = document.createElement("table");
tbl.className = "datatable";
tbl.border = "6";
tbl.width = "500";
tbl.cellPadding = "10";

var tbody = document.createElement("tbody");

var x = xmlDoc.getElementsByTagName("Book");

for (i = 0; i < x.length; i++) {

    var title = x[i].childNodes[0].text;
    var author = x[i].childNodes[1].text;

    //var title = x[i].getElementsByTagName("title")[0].childNodes[0].nodeValue;
    //var author = x[i].getElementsByTagName("author")[0].childNodes[0].nodeValue;

    var row = document.createElement("tr");

    var td = document.createElement("td");
    td.appendChild(title);

    //td.appendChild(author);

    row.appendChild(td);

}
tbody.appendChild(row);
tbl.appendChild(tbody);
document.getElementById("content").appendChild(tbl);
<?xml version="1.0" encoding="utf-8"?>
<Books>
<Book>
    <title>A Bend in the river</title>
    <author>V.S. Naipaul</author>
</Book>
<Book>
    <title>Earth</title>
    <author>Emile Zola</author>
</Book>
<Book>
    <title>I am not an Island</title>
    <author>V.S. Naipaul</author>
</Book>
<Book>
    <title>Macbeth</title>
    <author>William Shakespeare</author>
</Book>
<Book>
    <title>Quarantene</title>
    <author>Jim Crass</author>
</Book>
</Books>

助けてくれる人に感謝します。

4

2 に答える 2

0

試す

  <body onload="load()">
    <div id="content"></div>
  </body>

function load() {
    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", "books.xml", false);
    xmlhttp.send();
    xmlDoc = xmlhttp.responseXML;

    var tbl = document.createElement("table");
    tbl.className = "datatable";
    tbl.border = "6";
    tbl.width = "500";
    tbl.cellPadding = "10";

    var tbody = document.createElement("tbody");

    var x = xmlDoc.getElementsByTagName("Book");

    for (i = 0; i < x.length; i++) {
        var title = x[i].getElementsByTagName('title')[0].firstChild.nodeValue;
        var author = x[i].getElementsByTagName('author')[0].firstChild.nodeValue;

        var row = document.createElement("tr");

        var td = document.createElement("td");
        td.innerHTML = title;
        row.appendChild(td);

        td = document.createElement("td");
        td.innerHTML = author;
        row.appendChild(td);

        tbody.appendChild(row);

    }
    tbl.appendChild(tbody);
    document.getElementById("content").appendChild(tbl);

}

デモ:フィドル

于 2013-09-05T03:37:36.350 に答える