2012-07-19 83 views
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.ie我需要所有nodes.Is的可能值讀取的所有值沒有使用服務器端腳本語言的所有節點的值。我用來讀取所有標題的代碼如下。

<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> 

在此先感謝..........

回答

1

你能jQuery的使用,而不是核心JavaScript。我正在使用以下代碼來顯示本地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> 

輸出是:

  • 日常意大利,嘉妲·狄羅倫提斯,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