我有一个看起来像这样的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数据。可能吗?感谢
答案 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);