jQuery:XML - 从特定节点读取子节点

时间:2012-03-08 23:59:13

标签: javascript jquery xml

我有一个xml文件,我想在其中读取特定节点的子节点...下面是XML文件。

XML文件结构:

<?xml version="1.0" encoding="ISO-8859-1"?>

<categories>
<category type='Type A'>
    <genre>1</genre>
    <genre>2</genre>
</category>
<category type='Type B'>
     <genre>3</genre>
     <genre>4</genre>
     <genre>5</genre>
</category>
<category type='Type C'>
    <genre>6</genre>
</category>
</categories>

我需要使用这个XML的一个例子是类别B的所有类型。我怎么能过滤掉所有其他类别,所以我可以做一个 .find(“genre”)。每个。 ...... ,只返回3,4和5类型。

使用以下代码:

$.ajax({
        type: "GET",
        url: "myxml.xml",
        dataType: "xml",
        success: function(data){
            xml = data;
            });
        }
    });

    return {getXml : function() 
    { 
        if (xml) return xml;
    }};
})();

/* On Category Change */
$(".category").change(function(){
    var xml = xmlArtists.getXml();

    $(".genre").find("option").remove().end();

    var type = $(this).val();
    var typeGenres = $(xml).find("categories").filter(function(){
        return $(this).find("category").attr("type") == type;
    });

    typeGenres.find("genre").each(function(){
        var genre = $(this).text();
        $(".genre").append("<option value=" + genre + ">" + genre + "</option>");
    });
});

.category是一个对象,当它改变了代码时应该触发...因为我在改变它时会对另一个对象进行改进,但是对于这个问题来说这对它来说并不重要......

提前致谢!!

1 个答案:

答案 0 :(得分:4)

$(xml).find('category[type="Type B"] > genre')

这将找到categorytype的所有"Type B"个节点,并获取每个匹配类别的所有genre个子节点。

相关问题