在父标记中解析XML信息

时间:2013-03-20 06:30:06

标签: jquery html xml

我有一个看起来像这样的XML:

<state1>
<county>
<villager>John Smith</villager>
<income>3000</income>
</county>
<county>
<villager>John Smith</villager>
<income>3500</income>
</county>
<county>
<villager>Peter Smith</villager>
<income>3100</income>
</county>
<county>
<villager>Paul Smith</villager>
<income>3200</income>
</county>
</state1>

<state2>
. .
</state2>

我使用这些代码将信息现在解析为HTML表格:

<script>
$(document).ready(function(){
 $.ajax({
  type: "GET",
  url: "election2008.xml", 
  dataType: "xml",
  success: function(xml) {
   $(xml).find('county').each(function(){   
    var Col0 = $(this).find('villager').text();
    var Col1 = $(this).find('income').text();
    $('<tr></tr>').html('<td>'+Col0+'</td><td>'+Col1+'</td>').appendTo('#chart');
   });
  }
 });
});
</script>

我想只检索State1中的数据并将它们输出到HTML。我怎么做?

目前我的脚本解析所有信息并将它们放在一个大的HTML表中,但我只想读取state1数据。可能吗?感谢

2 个答案:

答案 0 :(得分:0)

如果我理解正确 - 您希望创建每个中包含1个状态的新HTML文件。

您可以使用PHP创建html文件,请查看此处:http://www.tizag.com/phpT/filewrite.php

然后,当您在AJAX函数中解析XML时,将状态数据发送到PHP文件以写入包含该表的新页面。

编辑:

哦,你的意思是:

success: function(xml) {
    var stat1 = $(xml).find('state1');  
    $(stat1).find('county').each(function(){    
        var Col0 = $(stat1).find('villager').text();
        var Col1 = $(stat1).find('income').text();
        $('<tr></tr>').html('<td>'+Col0+'</td><td>'+Col1+'</td><td>'+Col2+'</td>').appendTo('#chart');
    });

答案 1 :(得分:0)

如果您唯一关心的是捕获state1,那么我们可以像这样检查数组的索引:

success: function(xml) {
    $(xml).find('county').each(function(i){ <--- **i** is the index
        if( i == 0 ){ //<--- if index is zero, which is state 1
            var Col0 = $(this).find('villager').text();
            var Col1 = $(this).find('income').text();
            $('<tr></tr>').html('<td>'+Col0+'</td><td>'+Col1+'</td><td>'+Col2+'</td>').appendTo('#chart');
        }
    });
  }

或者,您可以通过简单地执行

来请求第一个
var state1 = $(xml).find('state1').find('county').eq(0),
    Col0 = state1.find('villager').text(),
    Col1 = state1.find('income').text(),
    Con2 = state1.find('something').text();

等等。

如果您想根据请求它的文件名获取该项目,您可以使用此方法:

//get the url pathname
var url = window.location.pathname;

//split the pathname on the last occurence of a `/`, which should be superceded by state1.html or state2.html, etc..
var state = url.substring(url.lastIndexOf('/'));

Now let's get the county that we want....
var countyNum = state.match(/[0-9]/)[0];

//and now the corresponding county within the state...

var county = $(xml).find('state').eq(0).find('county').eq(countyNum);