我有一个像这样的xml数据:
<pages>
<page name=1>
<page name=2>
<page name=3>
<page name=4>
</page>
<page name=5>
</page>
</page>
<page name=6>
</page>
</page>
<page name=12>
<page name=3>
<page name=4>
</page>
<page name=5>
</page>
</page>
<page name=6>
</page>
</page>
</page>
</page>
<page name = 13>
<page name=11>
<page name=2>
<page name=3>
<page name=4>
</page>
<page name=5>
</page>
</page>
<page name=6>
</page>
</page>
</page>
</pages>
我想得到名称属性的前两个级别的名称。
1,2,12,13,11
我试过了:
var results = [];
$.ajax({
type: "GET",
url: "xx.xml",
dataType: "text",
success: function (xml) {
if (typeof xml == 'string' || xml instanceof String) {
var $doc = $.parseXML(xml);
$($doc).find('page').each(function(){
results.push($(this).attr('name'));
});
}
}
});
我试过了:Accessing repeated XML tags at differing hierarchy levels in JavaScript
但是,我发现jQuery中的find()
函数获取了所有页面;
我只想要层次结构树的前两级。
任何建议都表示赞赏。
来自SO的善良的人:
var results = [];
$.ajax({
type: "GET",
url: "pathwayHierarchy.xml",
dataType: "text",
success: function (xml) {
if (typeof xml == 'string' || xml instanceof String) {
var $doc = $.parseXML(xml);
$($doc).find('pages').children().each(function(){
results.push($(this).attr('name'));
$(this).children().each(function(){
results.push($(this).attr('name'));
});
});
}
}
});
答案 0 :(得分:0)
这会得到所要求的结果:
$($doc).find("pages > page, pages > page > page").each(function() {
results.push($(this).attr('name'));
});
这将找到1或2层的所有页面元素。
或者,您可以使用我之前在评论中建议的children()。但我更喜欢单一的发现。