我在按照收到的顺序显示XML文件的内容时遇到了一些问题。
例如,XML文件包含页面节点,每个页面节点包含各种子节点,例如 a,b,c 。页面的子节点的布局各不相同,我需要在显示输出中模仿这种布局。
示例XML文件:
<page>
<a>
test content...
</a>
<a>
test content...
</a>
<c>
test content...
</c>
<a>
test content...
</a>
<b>
test content...
</b>
</page>
目前我收集的内容如下:
$(xml).find('page').each(function(){
$(this).find('a').each(function(){
...doing stuff here
}
$(this).find('b').each(function(){
...doing stuff here
}
$(this).find('c').each(function(){
...doing stuff here
}
}
我的问题是,通过使用这种方法收集数据,我得到了这样的显示:
<a>
<a>
<a>
<b>
<c>
然而,我需要的是XML文件中的布局:
<a>
<a>
<c>
<a>
<b>
所以我的问题是,如何迭代XML文件并在一个循环中收集数据,而不是为每个子节点分别进行循环。基本上,我需要Javascript / jQuery相当于:
for(int i = 0; i < File.size; i++){
if(i==<a>){
do something
}
else if(i==<b>){
do something
}
else if(i==<c>){
do something
}
}
...但 i 可以是字符串,而不仅仅是字符。
答案 0 :(得分:0)
使用*而不是标记名称
$(xml).find('page').each(function(){
$(this).find('*').each(function(){
// ...doing stuff here
}
}
答案 1 :(得分:0)
谢谢冠军!我喜欢你的风格,你的回答没有给我所有的答案,但我需要找到它们。
$(this).find('*').each(function(){
// ...doing stuff here
}
上面正是我需要以所需的顺序从上到下遍历文件...完美!
我的下一个问题是弄清楚如何在整个过程中访问XML节点,我使用了“if”这样的情况......
if(this.tagName == "a"){
//...do what i need in here
}
所以最后我的代码看起来像这样:
$(this).find("*").each(function(){
if(this.tagName == "a"){
//...doing stuff
}
if(this.tagName == "b"){
//...doing stuff
}
if(this.tagName == "c"){
//...doing stuff
}
});
..允许我遍历所选的XML文件(或文件中的标签)并按照读取的顺序挑选我所需的数据。 :)