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 ファイルを反復処理して、サブノードごとに個別のループではなく、1 つのループでデータを収集するにはどうすればよいかということです。基本的に、次の 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 に答える