2011-04-30 78 views
0

我想在解析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 
+0

你想分配哪个变量在哪里,你可以给更多的细节 – kobe 2011-04-30 18:36:05

+0

hi kobe,基本上我想分配的变量是我解析的变量 - 所以现在,最终的结果是:第1行有不是值,第2行的值为第1行,第3行的值为第2行。 – dtwy 2011-04-30 20:03:25

回答

2

在你上面的代码,我看不出一个理由,为什么你不能耽误你解析你的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>,我改变了有点什么,我想可能是什么你自找的。