Javascript 使用JQuery解析XML(需要逻辑方面的帮助)
我试图在解析XML文档时生成HTML。问题是,我有一些变量需要在解析之前进行赋值——有人能告诉我一个解决方法吗Javascript 使用JQuery解析XML(需要逻辑方面的帮助),javascript,jquery,xml,Javascript,Jquery,Xml,我试图在解析XML文档时生成HTML。问题是,我有一些变量需要在解析之前进行赋值——有人能告诉我一个解决方法吗 $.ajax({ url: 'doc.xml', type:'get', dataType:'xml', async:'false', success:function(xmlReply){ var out = ''; var businfo = ''; var businfoOne = '';
$.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
$.ajax({
url:'doc.xml',
类型:'get',
数据类型:'xml',
异步:'false',
成功:函数(xmlReply){
var out='';
var businfo='';
var businfone='';
var latFrom='';
var longFrom='';
var位置=“”;
var latTo=“”;
var longTo=“”;
$(“#结果”).empty();
out+='';
$(xmlReply).find('行程').each(函数(){
out+='- ;
locationAt=$(this.find('description').text();
out+=位置at;
out+='
';
out+='';
})
//out+='
';
$(“#结果”)。追加($(输出));
$(“#结果”).append(“”);
$('#resultslist')。listview();
}//成功
});//AJAX
在上面的代码中,我看不出在解析XML后不能延迟构建最终输出的原因。我稍微更改了代码,添加了一个新的临时变量parse_out
,在解析过程中,您可以为项目构建HTML内容,然后在解析完所有内容后,将
添加到最终输出中(现在设置了变量)从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
$.ajax({
url:'doc.xml',
类型:'get',
数据类型:'xml',
异步:'false',
成功:函数(xmlReply){
var out='';
var businfo='';
var businfone='';
var latFrom='';
var longFrom='';
var位置=“”;
var latTo=“”;
var longTo=“”;
$(“#结果”).empty();
out+='';
$(xmlReply).find('行程').each(函数(){
locationAt=$(this.find('description').text();
var计数=0;
var transfer=$(this).find('route').length;
var parse_out=“”;
$(this).find('route').each(function(){
//显示传输
如果(计数>0){parse_out+='>>>传输到>>>
';}
//显示上车信息
如果(计数=0){
businfo=$(this.find('bus').text();
}
parse_out+=$(this.find('bus').text();
$(this).find('geton').each(function(){
//在哪里上车
如果(计数=0){
latFrom=$(this.find('lat').text();
longFrom=$(this.find('long').text();
}
$(this.find('name').text();
解析出+='
叶:';
parse_out+=$(this.find('time').text();
});
//结束盖顿
$(this).find('getoff').each(function(){
$(this.find('name').text();
parse_out+='
到达:';
parse_out+=$(this.find('time').text();
解析出+='
';
latTo=$(this.find('lat').text();
longTo=$(this.find('long').text();
});
计数++;
});
out+='- ;
out+=位置at;
out+='
';
out+='';
});
out+='
';
$(“#结果”)。追加($(输出));
$('#resultslist')。listview();
}//成功
});//AJAX
我也不明白你为什么在处理结束时注释掉关闭你的
,为什么在输出后附加一个空的
,我也将这一点更改为我认为可能是你想要的。你想分配给哪个变量,你能给出更多细节吗,基本上,我想要分配的变量是我正在解析的变量——所以现在,最终结果是:第1行没有值,第2行有第1行的值,第3行有第2行的值。