查找xml字符串节点是否在jquery中有任何子元素

时间:2014-02-19 14:02:11

标签: javascript jquery xml

我有一个xml字符串,如下所示

<parent>
   <id>parent1</id>
   <child>
       <id>parent1child1</id>
   </child>
</parent>
<parent>
   <id>parent2</id>
   <child/>
</parent>

如何使用jquery检查子节点中是否有更多节点,还有一个问题是当我尝试获取id的值时

$(this).find("id").text()

然后我得到父母和孩子的id如何得到当前节点的id

2 个答案:

答案 0 :(得分:0)

你最好使用xpath,但也可以使用jquery

var xml="<root><parent>\
   <id>parent1</id>\
   <child>\
       <id>parent1child1</id>\
   </child>\
</parent>\
<parent>\
   <id>parent2</id>\
   <child/>\
</parent></root>"
, xmlDoc = $.parseXML( xml )
, $xml = $( xmlDoc )
, allWithChildrenId = $xml.find('parent:has(child:has(id))').each(
    function(i,e) {  console.log (i,e) })
, allWithChildrenAny = $xml.find('parent:has(child:has(*))').each(
    function(i,e) {  console.log (i,e) })

答案 1 :(得分:0)

我相信您可以通过以下选项完成此操作:fiddle

// gets id for each parent node
$(xml).find('parent > id').each(
function () {
    alert($(this).text());
}); 

// gets id for each child node
$(xml).find('parent > child > id').each(
function () {
    alert($(this).text());   
}); 

// gets count of ids of children in each parent node
$(xml).find('parent').each(
function () {
    alert($(this).find('child > id').length);    
}); 

更新:

$(xml).children('parent').each(
    function () {
        //parent id
        alert($(this).children(':first').text());
        $(this).find('child').each(function () {
            //each child element for each parent
            $(this).children(':not(child)').each(function () {
                alert($(this).text());
        });
    });
});

see new fiddle here