如何使用javascript从XML检索数据

时间:2015-11-18 16:06:51

标签: javascript arrays xml parsing dom

我需要获取此文件XML中包含的所有数据

    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <Tags>
      <Tag>
        <Nome>#SaintDenis</Nome>
        <Classe>21</Classe>
     </Tag>
    ....
    </Tags>

为了创建像这样的数组

    arr [[SaintDenis, 21]......]

如何在javascript中解析xml文件的结构... 谢谢你的建议!

3 个答案:

答案 0 :(得分:1)

你可以用JQuery做这样的事情:

 $(document).ready(function()
      {
        $.get('myData.xml', function(d){
        $('body').append('<h1> Recommended Web Development Books </h1>');
        $('body').append('<dl />');

        $(d).find('book').each(function(){

            var $book = $(this); 
            var title = $book.attr("title");
            var description = $book.find('description').text();
            var imageurl = $book.attr('imageurl');

            var html = '<dt> <img class="bookImage" alt="" src="' + imageurl + '" /> </dt>';
            html += '<dd> <span class="loadingPic" alt="Loading" />';
            html += '<p class="title">' + title + '</p>';
            html += '<p> ' + description + '</p>' ;
            html += '</dd>';

            $('dl').append($(html));

            $('.loadingPic').fadeOut(1400);
        });
    });
});

有关详细信息,请参阅http://code.tutsplus.com/tutorials/quick-tip-use-jquery-to-retrieve-data-from-an-xml-file--net-390

答案 1 :(得分:1)

您可以使用递归。

function iterate (node) {
    for (var i = 0; i < node.childNodes.length; i++) {
      var child = node.childNodes[i];
      iterate(child);
      //gather info here
    }
}

希望这有帮助!

答案 2 :(得分:0)

这是你的输入,所以:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <Tags>
      <Tag>
        <Nome>#SaintDenis</Nome>
        <Classe>21</Classe>
     </Tag>
    ....
    </Tags>

最好的事情就是这样做:

function getValues ( XMLnode ) {
    var Values = [];
    var childs = XMLnode.childNodes;
    for (var i = 0; i < childs.length; i++) {
      var array_temp = [];
      if(childs[i].nodeName == 'Tag'){    // I think each tag have names and classe
         var childsTag = childs[i].childNodes;
         var array_temp_2 = [];
         for (var i = 0; i < childs.length; i++) {
             array_temp_2.push( childs[i].value ) ; // here you can use 'value'
                                                    // use your own tag('name' or whatever)
         }
         array_temp.push(array_temp_2);
      } 
       Values.push( array_temp );
    }
    return Values;
}

这就是全部:

var valuesXML = [];
valuesXML = getValues( XMLnode ) ;