通过JQuery加载XML,包括属性

时间:2016-01-31 19:37:50

标签: jquery xml

我尝试使用一些改编自using Jquery to get XML and put into html table的代码。除了XML文件之外,它的工作几乎完美无缺,我加载了每个项目的属性ID号,我无法加载。

所以XML看起来有点像..

 <Incidents>
   <Incident id="123">
     <ModTime>2016-01-23T08:00:00Z</ModTime>
     <comments>comments here</severity>
     <currentUpdate>update</currentUpdate>
     <status>Active</status>
   </incident>
 <Incidents>
   <Incident id="456">
     <ModTime>2016-01-23T08:00:00Z</ModTime>
     <comments>comments here</severity>
     <currentUpdate>update</currentUpdate>
     <status>Active</status>
   </incident>

我以为我可以适应这个: How to parse xml attributes with jQuery alone?

<script type='text/javascript'>//<![CDATA[
$.ajax({
type: "GET",
url: "feed.xml",
dataType: "xml",
success: function(xml){
    $('#table').append('<h2>XML</h2>'); 
    $('#table').append('<table id="show_table" border="1" >'); 
    $(xml).find('Incident').each(function(){

        var $feed = $(this);
        var id = $feed.find('Incident').attr('id');
        var mod = $feed.find('ModTime').text();
        var comments = $feed.find('comments').text();
        var update = $feed.find('currentUpdate').text();
        var status = $feed.find('status').text();


        var html = ' <tr><td >' + id + '</td><td >' + mod + '<br>' + comments     + '</td><td>' + update + '</td><td>'  + status +'</td><td > </tr>';
        $('#show_table').append(html);
    });
}
});
</script>

但是,所有ID行显示都是&#39;未定义&#39;对于每个事件。

我设法得到的最接近的是......

        var id = $(xml).find("Disruption").attr("id");

但只显示所有行的相同ID号。

1 个答案:

答案 0 :(得分:0)

$(xml).find('Incident')

你得到了所有的事件。

var $feed = $(this);

循环播放每个事件,将元素存储在$feed

var id = $feed.find('Incident').attr('id');

然后,您可以搜索事件的后代以查找更多事件(并获取第一个事件的ID)。

其他事件中没有存储任何事件,因此您无法找到任何事件(并获取undefined,这是您选中的0事件之一的ID。< / p>

你只想:

var id = $feed.attr("id");