0

私はこのようなxmlファイルを持っています

    <bookstore>
      <book category="cooking">
      <title lang="en">Everyday Italian</title>
      <author>Giada De Laurentiis</author>
      <year>2005</year>
      <price>30.00</price>
      </book>
      <book category="children">
      <title lang="en">Harry Potter</title>
      <author>J K. Rowling</author>
      <year>2005</year>
      <price>29.99</price>
      </book>
      <book category="web" cover="paperback">
      <title lang="en">Learning XML</title>
      <author>Erik T. Ray</author>
      <year>2003</year>
      <price>39.95</price>
     </book>
</bookstore>

このxmlのすべての値を読み取りたい。つまり、すべてのノードの値が必要です。サーバー側のスクリプト言語を使用せずにすべてのノードの値を読み取ることはできますか。xmlのすべてのタイトルを読み取るために使用したコードは次のとおりです。下記のとおり。

<script type="text/javascript">
        function loadXMLDoc()
        {
        //var item = document.getElementById('search').value;
        var request = new XMLHttpRequest();
        var url = "http://saletrack.cynere.net/test2.xml";
        request.open("GET",url, true);
        request.send();
        request.onreadystatechange = function() {
        if (request.readyState == 4) {
            if (request.status == 200 || request.status == 0) {
                var myxml = request.responseXML;
                var theHTML = '';
                var x = myxml.getElementsByTagName("title");
                for (var i = 0; i < x.length; i++) {
                var y = x[i].childNodes[0].nodeValue;
                theHTML += ['<div class="result"',
                '<div ul="content">',
                '<li><h3>'+y+'</h3></li>',
                '</ul>',
                '</div>'].join('');
                    }
            }
        }
        document.getElementById('list').innerHTML = theHTML;
        }
        }

        document.addEventListener("deviceready", loadXMLDoc, false);

    </script>

前もって感謝します..........

4

1 に答える 1

1

コア JavaScript の代わりに jquery を使用できますか。次のコードを使用して、ローカルの xml ファイルの内容を表示しています。

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script type="text/javascript">
//Code Starts
$(document).ready(function(){
  $("#list").append("<ul></ul>");
  $.ajax({
    type: "GET",
    url: "test2.xml",
    //url: "test2.xml",
    crossDomain: true,
    dataType: "xml",
    success: function(xml){
    $(xml).find('book').each(function(){
      var sTitle = $(this).find('title').text();
      var author = $(this).find('author').text();
      var year = $(this).find('year').text();
      var price = $(this).find('price').text();
      $("<li></li>").html(sTitle + ", " + author + ", " + year + ", " + price ).appendTo("#list ul");
    });
  },
  error: (function(xhr, ajaxOptions, thrownError) {
    ///show error message ie. "Status Code: ("+xhr.status+")<br>Description: "+xhr.statusText
    alert("An error occurred while processing XML file. Status Code: ("+xhr.status+")<br>Description: "+xhr.statusText );
  })
  });
});
</script>

HTMLコード:

<body>
<div id="list"></div>
</body>

出力は次のとおりです。

  • 毎日のイタリア語、Giada De Laurentiis、2005、30.00
  • ハリー・ポッター、J・K・ローリング、2005年、29.99
  • XQuery Kick Start、James McGovernPer BothnerKurt CagleJames LinnVaidyanathan Nagarajan、2003 年、49.99
  • XML の学習、Erik T. Ray、2003 年、39.95
于 2012-07-19T05:56:23.670 に答える