用JQuery解析XML(需要逻辑帮助)
问题描述:
我想在解析XML文档时生成HTML。问题是我有变量需要分析之前被分析 - 任何人都可以告诉我一个解决方法吗?用JQuery解析XML(需要逻辑帮助)
$.ajax({
url: 'doc.xml',
type:'get',
dataType:'xml',
async:'false',
success:function(xmlReply){
var out = '';
var businfo = '';
var businfoOne = '';
var latFrom = '';
var longFrom = '';
var locationAt = '';
var latTo = '';
var longTo = '';
$("#result").empty();
out += '<ul id=\'resultslist\' data-role=\'listview\' data-theme=\'c\'>';
$(xmlReply).find('itinerarie').each(function(){
out += '<li data-role=\'list-divider\' data-theme=\'a\'>';
locationAt = $(this).find('description').text();
out += locationAt;
out += '</li>';
out += '<li><a href=\"#route_results_map\" onclick=\"plotMap(\''+businfo+'\','+latFrom+','+longFrom+','+latTo+','+longTo+')\">';
var count = 0;
var transfer = $(this).find('route').length;
$(this).find('route').each(function(){
//display transfer
if(count > 0){out+= '>>> Transfer To >>><br/>';}
//display get on bus information
if(count == 0){
businfo = $(this).find('bus').text();
}
out += $(this).find('bus').text();
$(this).find('geton').each(function(){
//where to board the bus
if(count == 0){
latFrom = $(this).find('lat').text();
longFrom = $(this).find('long').text();
}
$(this).find('name').text();
out += '<br/>Leaves: ';
out += $(this).find('time').text();
})
//end geton
$(this).find('getoff').each(function(){
$(this).find('name').text();
out += ' <br/>Reaches: ';
out += $(this).find('time').text();
out += '<br/>';
latTo = $(this).find('lat').text();
longTo = $(this).find('long').text();
})
count++;
})
out += '</a></li>';
})
//out += '</ul>';
$("#result").append($(out));
$("#result").append('<ul>');
$('#resultslist').listview();
}//success
});//ajax
答
在你上面的代码,我看不出一个理由,为什么你不能耽误你解析你的XML之后建立你的最终输出。我稍微改了一下你的代码,我添加了一个新的临时变量parse_out
,在这个变量中你可以在解析的时候为这个项目创建HTML内容,然后在解析完所有内容之后,这就是当你将<li>
添加到最终输出时现在设置的变量)以及来自parse_out
临时变量的HTML内容。
$.ajax({
url: 'doc.xml',
type:'get',
dataType:'xml',
async:'false',
success:function(xmlReply){
var out = '';
var businfo = '';
var businfoOne = '';
var latFrom = '';
var longFrom = '';
var locationAt = '';
var latTo = '';
var longTo = '';
$("#result").empty();
out += '<ul id=\'resultslist\' data-role=\'listview\' data-theme=\'c\'>';
$(xmlReply).find('itinerarie').each(function(){
locationAt = $(this).find('description').text();
var count = 0;
var transfer = $(this).find('route').length;
var parse_out = "";
$(this).find('route').each(function(){
//display transfer
if(count > 0){parse_out+= '>>> Transfer To >>><br/>';}
//display get on bus information
if(count == 0){
businfo = $(this).find('bus').text();
}
parse_out += $(this).find('bus').text();
$(this).find('geton').each(function(){
//where to board the bus
if(count == 0){
latFrom = $(this).find('lat').text();
longFrom = $(this).find('long').text();
}
$(this).find('name').text();
parse_out += '<br/>Leaves: ';
parse_out += $(this).find('time').text();
});
//end geton
$(this).find('getoff').each(function(){
$(this).find('name').text();
parse_out += ' <br/>Reaches: ';
parse_out += $(this).find('time').text();
parse_out += '<br/>';
latTo = $(this).find('lat').text();
longTo = $(this).find('long').text();
});
count++;
});
out += '<li data-role=\'list-divider\' data-theme=\'a\'>';
out += locationAt;
out += '</li>';
out += '<li><a href=\"#route_results_map\" onclick=\"plotMap(\''+businfo+'\','+latFrom+','+longFrom+','+latTo+','+longTo+')\">';
out += parse_out;
out += '</a></li>';
});
out += '</ul>';
$("#result").append($(out));
$('#resultslist').listview();
}//success
});//ajax
我也没明白你为什么注释掉关闭您<ul>
在你处理的到底为什么要附加您的输出后,空<ul>
,我改变了有点什么,我想可能是什么你自找的。
你想分配哪个变量在哪里,你可以给更多的细节 – kobe 2011-04-30 18:36:05
hi kobe,基本上我想分配的变量是我解析的变量 - 所以现在,最终的结果是:第1行有不是值,第2行的值为第1行,第3行的值为第2行。 – dtwy 2011-04-30 20:03:25