【问题标题】:Search for multiple nodes in XML using jQuery使用 jQuery 在 XML 中搜索多个节点
【发布时间】:2015-08-05 19:18:12
【问题描述】:

我在车辆适配指南方面取得了很大进展。我已经根据以前的选择动态填充了一个下拉框,现在我需要这些选择来搜索 xml 文件并返回我的结果。我的旧代码仅按车辆年份搜索,并且返回所有具有同一年份的车辆。我正在尝试使用多个变量解析我的 XML,但现在无法返回任何结果。我如何能够搜索模型,然后在模型中搜索年份?下面是我的代码 sn-ps。

<script type="text/javascript">
jQuery(document).ready(function($){

var $xml;

var make = $('#make');
var model = $('#model');
var year = $('#year');
var front1 = $('#Front_Location_1');
var frontsize1 = $('#Front_Size_1');
$.get('fitguide3.xml', function(data){
    $xml = $(data);
    var rows = $(data).find('ROWSET ROW');
    var makes = [];

    $.each(rows, function(index, element){
        var _make = $(element).find('MAKE').text();
        makes.push('<option value="' + _make + '">' + _make + '</option>');
    });

    makes = $.unique(makes);
    make.append(makes.join('\n'));


}, 'xml');

$('#make').on('change', function(){
    var _value1 = $(this).val();
    var _models = $xml.find('ROWSET ROW:contains("'+_value1+'")');
    var models = [];

    console.log(_models);


    $.each(_models, function(index, element){

        var _model = $(element).find('Model').text();
        models.push('<option value="' + _model + '">' + _model + '</option>');
    });
    models = $.unique(models);
    model.find('option').remove();
    model.append(models.join('\n'));

});
$('#model').on('change', function(){
    var _value2 = $(this).val();
    var _years = $xml.find('ROWSET ROW:contains("'+_value2+'")');
    var years = [];

    console.log(_years);


    $.each(_years, function(index, element){

        var _year = $(element).find('YEAR').text();
        years.push('<option value="' + _year + '">' + _year + '</option>');
    });
    years = $.unique(years);
    year.find('option').remove();
    year.append(years.join('\n'));

});





//  $('#make').val()
//  $('#model').val()
//  $('#year').val()
$('#year').on('click', function(){  
    var _value3 = $(this).val();
    var finalmodel = $('#model').val();
    var _front1 = $xml.find('ROWSET ROW:contains("'+finalmodel+','+_value3+'")');
    var front = [];  
    console.log(_front1);

    $.each(_front1, function(index, element){

        var _front = $('#frontspeakers').val();
        front.push('<p>' + element + '</p>');
        front = $.unique(front);
        front1.append(element);
    });


})

});


</script>

这是我想按型号和年份搜索的 XML:

<ROWSET>
<ROW>
<MAKE>ACURA</MAKE>
<Model>CL</Model>
<YEAR>2001-2003</YEAR>
<Front_Location_1>Door</Front_Location_1>
<Front_Size_1>6 1/2</Front_Size_1>
<Front_Location_2>Sail Panel</Front_Location_2>
<Front_Size_2>1    </Front_Size_2>
<Rear_Location_1>Deck</Rear_Location_1>
<Rear_Size_1>6 x 9</Rear_Size_1>
<Rear_Location_2></Rear_Location_2>
<Rear_Size_2></Rear_Size_2>
<Other_Speakers></Other_Speakers>
</ROW>
</ROWSET>

这会搜索它们,但没有得到任何结果。 正在进行中的版本位于HERE

【问题讨论】:

    标签: javascript jquery xml parsing


    【解决方案1】:

    由于这是我尝试编写的第一个脚本,对你们其他人来说可能看起来很简单,但是,经过 200 多次搜索,我自己搞定了!

        $('#year').on('click', function(){  
        var _value3 = $(this).val();
        var finalmodel = $('#model').val();
        var finalfilter = $xml.find('ROWSET ROW:contains("'+finalmodel+'")');
        var _front1 = finalfilter.filter('ROWSET ROW:contains("'+_value3+'")');
        console.log(_front1);
    
        $.each(_front1, function(index, element){
    
            var _front = $('#frontspeakers').val();
            var front = [];  
            front.push('<p>' + element + '</p>');
            front = $.unique(front);
            front1.html(element);
        });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多