【问题标题】:Parsing levels of XML in jquery在 jquery 中解析 XML 的级别
【发布时间】:2012-06-04 16:50:24
【问题描述】:

这是我的 XML。我会有很多学位,每个学位会有很多学校,每个学校都会有很多专业。该页面将提供三个下拉菜单。我不是要求所有代码来执行所有 onclicks 嵌套下拉更新。 (除非有人有一些很酷的重复模式,否则什么会起作用。

我遇到的这个问题是,当我从 Degrees 节点询问学位并将 text() 添加到下拉列表时,我从学位、学校、规范中获取所有文本......所以我想要的是一个下拉列表使用“Degrees 1”,但我得到“Degree 1 School 1 Spec...”,我相信你明白了,我尝试添加“Degrees.filter, and children”,但我什么也没得到。

我需要掌握如何使用嵌套节点一次解析一次级别的 XML。

感谢您的宝贵时间。

<Degrees>
  <Degree>
  Degree 1
  <Schools>
    <School>School 1
      <Specializations>
       <Specialization>Specialization 1</Specialization>
       <Specialization>Specialization 2</Specialization>
      </Specializations>
    </School>
    <School>School 2
      <Specializations>
       <Specialization>Specialization 3</Specialization>
       <Specialization>Specialization 4</Specialization>
      </Specializations>
    </School>
  </Schools>
  </Degree>
</Degrees>

当前的 jQuery

var Degrees = $(PID).find('Degrees');
    Degrees.find("Degree").filter("Degree").each(function () {
    var select = $('#degree');
    var value = $(this).text();
    select.append("<option value='" + value + "'>" + value + "</option>");
    });

HTML

<select id="degree">
    <option value="" selected="selected">-- Select Degree --</option>
</select>

【问题讨论】:

    标签: jquery xml xml-parsing


    【解决方案1】:

    这是我最终要做的,这也允许我对下拉列表进行排序。如果有人有任何其他想法,请发表评论。

    var degreelist = new Array();
                    $(xml).find('PID[id="' + PID + '"] Degrees Degree').each(function () {
                        var Item = new Object();
                        Item.Id = $(this).attr("id");
                        Item.value = $(xml).find('Degrees Degree[id=' + Item.Id + ']').text();
                        degreelist.push(Item);
                    });
    
                    degreelist.sort(function (a, b) {
                        if (a.value.text > b.value.text) return 1;
                        else if (a.value.text < b.value.text) return -1;
                        else return 0
                    })
    
                    for (var i = 0; i < degreelist.length; i++) {
                        $('#degree').append("<option value='" + degreelist[i].Id + "'>" + degreelist[i].value + "</option>");
                    }
    

    【讨论】:

      猜你喜欢
      • 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
      相关资源
      最近更新 更多