0

我在按接收顺序显示 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
 }
} 

...但可以是一个字符串而不仅仅是一个字符。

4

2 回答 2

0

谢谢冠军!我喜欢你的风格,你的回答并没有给我所有的答案,而是我需要找到它们的推动力。

$(this).find('*').each(function(){ 
        // ...doing stuff here
}

以上正是我需要按所需顺序从上到下遍历文件的内容......完美!

我的下一个问题是弄清楚如何一路访问 XML 节点,我使用了“如果”这样的情况......

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 文件(或文件中的标记),并按照读取的顺序挑选出我需要的数据。:)

于 2012-10-23T13:17:20.740 回答
0

使用 * 代替标签名称

$(xml).find('page').each(function(){    
     $(this).find('*').each(function(){ 
        // ...doing stuff here
     }


    }

演示

于 2012-10-22T14:18:59.753 回答