使用jQuery和JavaScript,如何区分具有相同Name attr的两个XML级别?

时间:2013-09-18 16:58:23

标签: javascript jquery xml

所以这是我尝试使用jQuery解析的示例Documentation.XML文件

<DocPortal Version="">
    <Folder Name="Sample Drawings" User="*">
        <File Type="TILES" Name="Sample1" FileName="Sample1.zip"/>
    </Folder>
    <Folder Name="Sample Site Information" User="*">
        <Folder Name="SampleInnerFolder1" User="*">
            <File Type="PDF" Name="Sample1" FileName="Sample1.pdf"/>
            <File Type="PDF" Name="Sample2" FileName="Sample2.pdf"/>
        </Folder>
        <Folder Name="SampleInnerFolder2" User="*">
            <File Type="PDF" Name="Sample1" FileName="Sample1.pdf"/>
            <File Type="PDF" Name="Sample2" FileName="Sample2.pdf"/>
        </Folder>
        <File Type="PDF" Name="Sample1" FileName="Sample2.pdf" QR=""/>
        <File Type="PDF" Name="Sample2" FileName="Sample2.pdf" QR=""/>
    </Folder>
</DocPortal>

当我执行以下代码时,我会得到两个级别中所有文件夹名称的列表

$.get(lDocumentationFilePath , function(data){
    $('#content').empty();
    $(data).find('Folder').each(function(){
        var $Folder = $(this);
        console.log($Folder.attr('Name'));
    });
});

我想要的只是每个顶级文件夹名称的列表。所以只需“样品图纸”和“样品网站信息”。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您需要使用children()而不是find()才能获得顶级后代。

$(data).children('Folder').each(function(){
    var $Folder = $(this);
    console.log($Folder.attr('Name'));
});
  

给定一个表示一组DOM元素的jQuery对象,   .children()方法允许我们搜索这些孩子   DOM树中的元素并从中构造一个新的jQuery对象   匹配元素。 .children()方法与.find()的不同之处在于    .children()只在DOM树中向下移动    .find()可以遍历多个级别以选择后代   元素(孙子等),reference