• 締切済み

xmlを読み込んで順不同の検索を行いたい

配列を検索対象として検索する処理を行いたいのですが、方法が分からなくて困っています。 下記のような例があった場合で、 <「listA」に含まれるテキスト>のうち、配列と一致したものをhtmlに記述し、配列の最後まで処理をしたいのですが、 eachでは当然頭から順処理なので以下例だと3番目しか表示されないことになります。 全部記述したいのですがどうしたらよいのでしょうか。 **xml <listlist> <listA>aa2</listA><listB>bbb</listB><listC>ccc</listC><listD>ddd</listD> </listlist> <listlist> <listA>aa3</listA><listB>bbb</listB><listC>ccc</listC><listD>ddd</listD> </listlist> <listlist> <listA>aaa</listA><listB>bbb</listB><listC>ccc</listC><listD>ddd</listD> </listlist> **javascript var x=("aaa","aa2","aa3");var y=0; $(document).ready(function(){ $.ajax({url: aaaa.xml',type: 'GET',dataType: 'xml',timeout: 100000,error: function(){alert('xmlファイルの読み込みに失敗しました');}, success: function(xml){ $(xml).find("listlist").each(function(){ if($(this).find("listA")==x[y]){ htmlに記述処理; y++; } });});});

みんなの回答

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

よくわかってませんが… 1)>以下例だと3番目しか表示されないことになります  eachのせいではなくて、xの定義がカンマ演算子になっているので、  x="aa3"と解釈されているからでは?  それなので、x[y]の値はundefinedになったり、"a"になったりブラウザによって異なる… 2)$(this).find("listA")って要素を返すと思うのですが(複数の可能性もある)  比較演算は常にfalseなのでは? 3)y++の実行タイミングを見るとeachの実行ごとに増えていくので、ご質問の  検索になっていないのでは?  それに、yの値は増加し続けるけれど、それに対応するx[y]の値が存在しない 4)そもそもlistAのテキストを調べたいのであれば、listlistを探す必要はなさそうな…  直接 listAの配列に対して処理をしてしまうのではだめなのでしょうか?  (直接は取得できないんでしたっけ?) 斜め読みしただけなので、違っているかもですが…

picicate
質問者

お礼

ありがとうございました。

関連するQ&A

  • java勉強中です。

    java勉強中です。 今、ArrayListでつまづいています。 質問の仕方が下手で、内容が分かり難いかもしれませんが、 どなたか、どうかよろしくお願いいたします。 ArrayList<String> listA = new ArrayList<String>(); ArrayList<String[]> listB = new ArrayList<String[]>(); があります。 1回目に listA = [aaa, bbb, ccc, ddd] 2回目に listA = [eee, fff, ggg, hhh] と、listA.add("~")で4つ追加して、 4つたまったら、それを1つの塊として 今度はlistBにaddしていきたいのですが、 listB.add(listA);としてしまっているので 下記のようにエラーになってしまいます。 ArrayList<String[]> add(String[])は引数(ArrayList<String>)に適用できません。 listBに[aaa, bbb, ccc, ddd],[eee, fff, ggg, hhh] としたいのですが、どのようにしたら良いでしょうか?

    • ベストアンサー
    • Java
  • 複数のxmlを同ページに読み込みたい

    同じ項目をもつxmlをカテゴリ別に複数作成された状態で、同一html上にjqueryで読み込みたいです。 var xmlFiles=new Array("a.xml","b.xml","c.xml"); $(document).ready(function(){ for(var i=0;i<xmlFiles.length;i++){ $.ajax({url: '',type: 'GET', dataType: 'xml',timeout: 100000,error: function(){alert('xmlファイルの読み込みに失敗しました');}, success: function(xml){ 処理 } }); } }); これだとおかしくなってしまいます。 $.ajax~~を読み込み名を変えて繰り返し記述してもうまくいかないのですが、これは1つのxmlにするしかないのでしょうか。

  • xmlから配列で取得したものを取り出したい

    as3初心者jpncan15といいます。 xmlから配列で取得したものをfunction外で取り出したいのですがどのようにすればいいのか悩んでいます。functionを調べたり配列を調べたり頭がかなり混乱中です。 お手数ですがご教授いただけますでしょうか? var ary:Array=new Array(); var ary_name:Array=new Array(); var loader:URLLoader = new URLLoader(); var request:URLRequest = new URLRequest("b.xml"); var xml:XML; loader.load(request); loader.addEventListener(Event.COMPLETE , XMLload); function XMLload(e:Event):void { xml = XML(e.target.data); num_txt.text = xml.item.length(); //xml件数をテキストフィールドへ入れる for each(var element:Object in xml.item.thumb) //配列に入れる {ary.push(element);} for each(var element_name:Object in xml.item.name) //配列に入れる {ary_name.push(element_name); trace(element_name);}//出力OK } //function外で配列を使用したい trace(ary[5]); trace(ary_name[2]);

    • ベストアンサー
    • Flash
  • jQueryの繰り返し

    下記のようなスクリプトで.cccと.ddd、.eeeと.fffにも同じ処理を適用したいです。 繰り返し処理のようなことができればシンプルなコードで書けると思うのですがやり方がわかりません。 キレイな書き方を教えていただけないでしょうか。 宜しくお願いします。 //スクリプト $(function(){ var $value1 = $('.aaa'); var $value2 = $('.bbb'); 処理内容 });

  • xmlからphpでうまくデータを出力できない

    WEBサービスでリクエストに対して取得したxmlの中で、下記のようなデータがあるのですが、それがうまくphpで出力できなくて困っています。 [xmlのデータ(一部)] <aaa>  <bbb>   <ccc>    <ddd>あいうえお</ddd>    <Date date="05" month="09" year="2009"> [phpのソース] echo $aaa->bbb->ccc->ddd ; echo $aaa->bbb->ccc->year ; ・・・(※) (※)の行は思いつきで書いてしまっているのですが、この状態で実行すると、「あいうえお」は取得できますが、日付が当然取得できません。質問は以下です。 (※)の部分は、どう書けばいいのでしょうか?

    • 締切済み
    • PHP
  • ajaxにより取得したxmlデータの加工について

    ajax通信でRSSのxmlデータを取得し、一部のタグを抽出してhtml上にリンク一覧を作りたく、以下のような処理をテストで作りました。 $(function() { $.ajax({ url: '取得対象のxmlファイルパス', type: 'GET', success: function(data) { //var json = $.xml2json(data); $(data)find('title').each(function(){ console.log($(this).text()); }); } }); }); コンソールにはすべて空データしか確認できないのですが、取得したdataを変換等する必要がありますでしょうか。

  • ruby+xml 特定の属性値をもつ要素の求め方

    宜しくお願いします。 ↓のようなxmlファイルがあり、 #########hoge.xml############# <root> <a name="a1"> <b>bbb1</b> <b>bbb2</b> <b>bbb3</b> <c>ccc1</c> </a> <a> <b>bbb4</b> <b>bbb5</b> </a> <a name="a3" price="100"></a> </root> ###################### ↓と同じ処理をしたいのですが、 doc = REXML::Document.new(open("hoge.xml")) doc.elements.each("root/a[@name='a1']/b") do |element| ... end a1が変数名の場合、 どのように記述したらよいのでしょうか。 doc = REXML::Document.new(open("hoge.xml")) attr = a1 doc.elements.each("root/a[@name='????????']/b") do |element| ... end 基本的な内容で申し訳ありませんが、 宜しくお願いします。

    • ベストアンサー
    • Ruby
  • XMLの特定のデータを書き込むには?

    下記のXMLファイルを読み込んで、 タグYYYのキーでKEY2を検索し、 子要素AAAの値のData2を書き換えるという処理を 作ろうとしてるのですが、 なかなか解決策が見つかりません。 よろしくお願い致します。 例: abc.xml <XXX> <YYY KKK="KEY1"> <AAA>Data1</AAA> <BBB>Data2</BBB> <CCC>Data3</CCC> </YYY> <YYY KKK="KEY2"> <AAA>Data1</AAA> <BBB>Data2</BBB> <CCC>Data3</CCC> </YYY> <YYY KKK="KEY3"> <AAA>Data1</AAA> <BBB>Data2</BBB> <CCC>Data3</CCC> </YYY> </XXX>

  • JavaScriptの$は文字以外にも意味がある?

    JavaScriptでは、$は、単なる文字として扱う。というのは調べてわかったのですが、 以下のプログラムの意味がわかりません。 ◆疑問1 「$を変数として宣言している」とすれば、以下のプログラムの始まりは var $ = ~~~ のようになりますよね? ◆疑問2 3行目あたりに出てくる「$.ajax(」のような記述は、変数$の、下の階層のなんらかのオブジェクト?なのかと思いましたが、$が何かのクラスであったり構造像体である旨は、どこにも宣言されていないので、変数ではない何かかのでしょうか?? ◆疑問3 いろんなところに、function()とあるのは、なぜなのですか? 無名関数?とかいうのがあるということはどこかで知りました。 が、 (1)下のプログラムでは、何回もfunction()として、処理を記述していますが、 何の意味があるのでしょうか? function(){  処理内容; }, と書くくらいなら、最初から無名関数としてくくらなくても、良くないですか? むしろ、無駄な文字数が増えるし、しかもわかりにくいように思いますが、この記載にメリットはあるのでしょうか? $(  function(){   $.ajax(    {     url: "doctors/data.xml",     dataType: 'xml',     timeout: 1000,     error: function(){      alert("xmlファイルの読み込みに失敗しました");     },     success: function (data){      $(data).find("item").each(function(){       if($(this).attr("val") == "new"){        $("ul.column").append('value=test');       }      });     }    }   );   $("li.noJavaScript").remove();  } );

    • ベストアンサー
    • AJAX
  • 別シートの値を検索して一致したものを合計する

    excelvba初心者です。 お手数おかけします。 難問なのかどうかもよく分からず。。困っています。 シート1       シート2   シート3 AAA 100     AAA 50      BBB 20 BBB 200   CCC 150   CCC 30 DDD 300   QQQ 250   DDD 10 EEE 400     WWW 350  RRR 40 上記の値を決められた順番に別シートに集計したい(その時に、値を1/10にしたい) シート4 AAA 150 BBB 220 CCC 180 DDD 310 EEE 400 FFF 0 GGG 0 www 350 findでAAAを検索し見つかった値を ifにて条件分岐させるものをつくったものの プロシャーシーが大きすぎと言われてできません。 どなたか教えていただけないでしょうか。

専門家に質問してみよう