如何使用JQuery从XML查找叶元素

时间:2013-02-01 13:30:45

标签: jquery xml ajax

我有一个

的XML文件
<?xml version="1.0" encoding="ISO-8859-1"?>
<childrens>
 <child id="1" value="Root Catalog" parent_id="0">
  <child id="2" value="Apparel" parent_id="1">
    <child id="3" value="Accessories" parent_id="2">
        <child id="4" value="Handbags" parent_id="3">
            <child id="5" value="Jewelry" parent_id="4"/>
            <child id="6" value="test1" parent_id="4"/>
            <child id="7" value="test2" parent_id="4"/>
            <child id="15" value="test3" parent_id="4"/>
        </child>
    </child>
  </child>
  <child id="8" value="test_A" parent_id="1">
    <child id="9" value="test_B" parent_id="8">
        <child id="10" value="test_C" parent_id="9">
            <child id="11" value="test_D" parent_id="10"/>
        </child>
    </child>
  </child>
 </child>
</childrens>

现在我想找到特定元素的叶元素

例如,我想找到Apparel

的叶元素

这是Jewelry, test1, test2, test3所以我希望这是我的输出

我已经编写了这个jQuery代码来查找叶元素

$.ajax({
type: "GET",
url: "test.xml",
dataType: "xml",
success: function(xml) {
    $(xml).find('child:empty').filter('child[value="Apparel"]').each(function(){
        var id = $(this).attr('id');
        alert(id)
    });
}
});

如果我只使用child:empty,那么它会给我所有的叶元素

我的代码无效...

1 个答案:

答案 0 :(得分:1)

查看问题Traversing to the last child element in a tree using jQuery selector

你可以这样做:

$(text).find('child[value="Apparel"]').find(':not(:has(*))').each(function(i, item) {
    console.log($(item).attr('id') + " : " + $(item).attr('value'));
});