2012-03-08 70 views
1

我有一个xml文件,其中我想读取特定节点的子节点...下面是XML文件。jQuery: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> 

什么,我wouild需要在使用该XML的一个例子是所有类别类型B.到底我能过滤掉所有其他类别,所以我可以做一个流派。.find( “类型”),每个....和仅返回类型3,4和5

赫雷什使用的代码IM:

$.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

只是理解了它比我想象...继承人的代码更容易。 /*在种类变更*/ \t $( “类”)改变(函数(){ \t \t VAR XML = xmlArtists.getXml();。 \t \t \t \t $( “流派 ”)找到(“ 选项”),删除()()结束; \t \t \t \t变种类型= $(本).VAL (); \t \t $(xml).find(“category [type ='” +(type)+“']”)。find(“genre”)。 \t \t \t $(“。genre”)。append(“”); \t \t}); \t}); – 2012-03-09 00:04:45

回答

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

这将找到所有category节点,其type"Type B",并得到所有匹配的每个类别的genre子节点。

+0

哈哈你我刚才发布的信息就在你回应之前,但它没有让我因为我的声誉,所以我把它作为评论。这比我想象的更容易......非常感谢! – 2012-03-09 00:07:09