在一个循环中读取xml文件的所有节点

read all the nodes of xml file in a loop

本文关键字:文件 xml 节点 读取 循环 一个      更新时间:2023-11-12

我有这样的 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.ie的所有值。我需要所有节点的值。是否可以在不使用服务器端脚本语言的情况下读取所有节点的值。下面给出了我用来阅读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>

提前感谢。。。。。。。。。。

你能用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>

输出为:

  • 《日常意大利语》,Giada De Laurentiis,2005年,30.00
  • 哈利·波特,J·K·罗琳,2005年,29.99
  • XQuery启动,James McGovern Per Bothner Kurt CagleJames LinnVaidyanathan Nagarajan,2003,49.99
  • 学习XML,Erik T.Ray,2003,39.95