我有一个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是一个对象,当它改变了代码时应该触发...因为我在改变它时会对另一个对象进行改进,但是对于这个问题来说这对它来说并不重要......
提前致谢!!
答案 0 :(得分:4)
$(xml).find('category[type="Type B"] > genre')
这将找到category
为type
的所有"Type B"
个节点,并获取每个匹配类别的所有genre
个子节点。