jQueryでxmlの異なるタグ要素を取得する方法

このQ&Aのポイント
  • jQueryを使用してxmlの異なるタグ要素を取得する方法について教えてください。
  • xmlのタグ要素ごとに異なるデータを取得して、それに応じてimgの表示/非表示を切り替えたいと思っています。
  • 複数のhtmlファイルがあり、そのhtmlファイルによって参照するxmlのタグが異なる場合についても教えてください。
回答を見る
  • ベストアンサー

jQueryでxmlの異なるタグ要素を取得したい。

jQueryを最近勉強したての者です。 詳しい方、どうか教えて下さい。 HTMLにxmlのデータを読み込ませようとしています。 概略をお話しすると、 htmlファイルによって、xmlの別々の要素を取得したいのです。 やりたいメソッドは同じです。 別々の要素の中のデータによって、imgの表示/非表示を切り替えたいのです。 問題は、対象となるhtmlファイルが複数あり そのhtmlファイルによって、参照するxmlのタグが異なる事なんです。 xmlは、以下のように<shopdata>をルートノードとし、以下のような感じです。 --------------------- <?xml version="1.0" encoding="utf-8"?> <shopdata> <item> <name1>0</name1> <name2>1</name2> <name3>0</name3> </item> </shopdata> --------------------- <name*>~</name*> の中のデータは、0もしくは1なのですが 0の時はimgを表示 1の時はimgを非表示させようと考えています。 ただ<name1><name2><name3> とタグ名がバラバラなんです。 ※おしりの数字が違うだけで、規則的ではあります。 ちなみにhtmlは複数あって  a.htmlの時は→xmlの<name1>を参照  b.htmlの時は→xmlの<name2>を参照  c.htmlの時は→xmlの<name3>を参照 という感じです。 ※htmlファイル名は特に規則的ではなく、いろいろなファイル名がついています。。。 最初、考えたのは、 htmlのどこかに、id="1"と入れて、idが1の時は、<name1>の要素を取得し、 htmlのどこかに、id="2"と入れて、idが2の時は、<name2>の要素を取得し… っていうことを考えたのですが、それもどのように書いたら良いのかが分からないんです。 そもそも、そういった事は可能なのでしょうか? ちなみのhtmlのbodyタグ自体がテンプレートでできているので、 idをどこかにふるとしたら、head内とかになるのしょうか? それぞれ、ボタンの表示は、 if文を使って、show(),hide()メソッドを使うとは思うのですが… 詳しくコードを教えていただけたら、助かります。 どうか、宜しくお願いいたします。

  • AJAX
  • 回答数1
  • ありがとう数3

質問者が選んだベストアンサー

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

使用条件がよくわかってませんけれど、 >ただ<name1><name2><name3> とタグ名がバラバラなんです。 読込む対象は全て同じxmlに固定されていると考えてよいのですよね? >htmlのどこかに、id="1"と入れて、idが1の時は、<name1>の要素を取得し、~ >ちなみのhtmlのbodyタグ自体がテンプレートでできているので、 >idをどこかにふるとしたら、head内とかになるのしょうか? スクリプト部分はファイルごとに違う設定が可能なのでしょうか? そうであれば、読込む部分は関数にしておいて  getAjax("name1"); とか getAjax("name2"); のように指定したい部分だけを、それぞれのhtml内に記載して呼び出すようにしておけばよいのではないでしょうか。 (残りの部分は共通にしておいて、html内にでも外部ファイルにでも…) あるいは、その部分も書き分けるのが嫌なのであれば、urlのファイル名部分とタグ名の対応表を用意しておいて、参照したいタグ名を求められるようにすれば、共通のスクリプトにすることも可能かと。 例えば  var loc = window.location.href.match(/\/([^/]+)\.html$/);  var name = loc?{"a":"name1", "b":"name2", "c":"name3"}[loc[1]]:null;  alert(name);  //(対応がない場合はundefined又はnull) みたいな方法で。 …あ!(↑)特段 jqueryにはなってませんけど。

mc0816
質問者

お礼

アドバイスありがとうございます。 また、お礼が遅くなってしまい、すみません。 HTMLに対して、jsファイルは一つです。 また、それぞれのHTMLのスクリプト部分はファイルごとに違う設定が可能です。 htmlの方にgetAjaxで呼び出すんですね。 ぜひ、参考にさせていただいて、いろいろやってみますね。 でもコードを書いていただいて もっともっと勉強しないとな…って実感です。。 お忙しいところ、大変ありがとうございました。

関連するQ&A

  • JQueryでxmlのデータを取得する。

    以下のようになっているxmlのデータがあります。 --------------------- <item> <name1>0</name1> <name2>1</name2> <name3>0</name3> </item> --------------------- <item>~</item>の中の 子ノードのタグ名とテキストデータをJQueryを使って取得したいと考えています。 上記のように、<name1><name2><name3> とタグ名がバラバラなので 配列で取得したいのですが。やり方がわかりません。 どなたかご教授ください。

    • ベストアンサー
    • AJAX
  • jQueryでXMLを操作

    jQueryでXMLを操作 最近jQueryを勉強しはじめました。 jQueryでXMLを読み込んで、item val="new"を含んだデータのみ<ul></ul>内に表示したいのですが うまくいきません。 ご教授願います。 また、こういったjQueryの使い方に関する、お勧めの本やページ等ございましたら 教えてください。宜しくお願い致します。 -------------------------XML Data------------------------- <data> <item val="new"> <link>01.html</link> <name>ほげ田 ほげ太</name > <photo>dummy.jpg</photo> </item> <item val="new"> <link>02.html</link> <name>ほげ田 ほげ子</name > <photo>dummy.jpg</photo> </item> <item val="new"> <link>03.html</link> <name>ほげ山 ほげ太</name > <photo>dummy.jpg</photo> </item> <item> <link>04.html</link> <name>ほげ山 ほげ子</name > <photo>dummy.jpg</photo> </item> </data> -------------------------JavaScript------------------------- $(function(){ $.ajax({ url: 'doctors/data.xml', dataType: 'xml', timeout: 1000, error: function(){ alert("xmlファイルの読み込みに失敗しました"); }, success : function(data){ $("item",data).each(function(){ if($("item",this).attr("val") == "new"){ $(".column").append('<li><a href="'+$("link",this).text()+'"><img src="image/'+$("photo",this).text()+'" alt="'+$("name",this).text()+'" title="'+$("name",this).text()+'"></a></li>'); } }) } }) $("li.noJavaScript").remove(); }) -------------------------HTML------------------------- <div id="wrapper"> <ul class="column"> <li class="noJavaScript">javaScriptを有効にしてください。</li> </ul> </div>

  • jQueryでxmlデータ取得について

    jQueryでxmlのデータを取得しました。 jsで宣言した変数データがあって、 その変数のデータと xmlのタグ(ノード)が一致していた場合、 そのxmlデータの値を返したいと考えています。 xmlは以下の感じです。 タグ名はすべて異なりますが、順番に並んでいます。 <data1>aaa</data1> <data2>bbb</data2> <data3>ccc</data3> 例としては jsでの変数の値がdata1の場合は、 xmlの<data1>の値を取得したいんです。 jsでの変数の値がdata2の場合は、 xmlの<data2>の値を取得したいんです。 そんな事ってできますか? 初心者なもので、とんちんかんな質問かもしれませんが どうか、宜しくお願いいたします。

    • ベストアンサー
    • AJAX
  • XML要素をテキストファイルに出力するようにするには?

    お世話になります。 Perlを使って以下のようなXMLドキュメントを読み込み、テキストファイルの出力を行いたいと思って、正規表現等を使ってプログラムを作ってはいましたが、なかなかうまく行かず、行き詰まってしまいました。 ~~読み出すファイルのタグ~~ <info num = 1> <name>namae1</name> <nunber>10</number> </info> <info num =2> <name>namae2</name> <nunber>25</number> </info> ・ ・ ~~終了~~ 上記で読み出したい要素は、それぞれの<info>タグ内の<name>と、<nunber>のタグ内の要素です。 そして、その要素をテキストファイルに出力する。というようなプログラムを考えております。 事情により、出来れば、Perlのモジュールを使わずに正規表現などにて取り出したいと思っていますが、楽な方法が有ればその方法もおしえていただければと思います。 使用目的は、ローカル上でXMLドキュメント内のデータを抽出することです。 何か良い方法が有れば、ご教授いただけると助かります。 よろしくお願いします。

  • XMLでオリジナルの属性を取得

    bodyタグ内からxmlタグによって参照しているXMLファイルにおいて、あるタグに指定されているオリジナルの属性を取得することってできますか? 具体的でなくて申し訳ありませんか、一般的にお願いします。

  • enumでの要素番号から要素名の取得方法

    こんにちは. java初心者です. 列挙型について勉強しています. 列挙型の中にファイル名を紐付けて利用したいと考えています. 要素名から要素番号を取得する方法はordinal()で出来ますが, その逆で,要素番号から要素名を取得する方法が調べても分かりませんでした. 具体的には,以下のソースで乱数を発生させ,その番号の要素名を取得する方法が知りたいです. よろしくお願いします. =========================== import java.util.Random; public class Sample { // 列挙型 enum Color{ RED("data1.txt"), BLUE("data2.txt"), GREEN("data3.txt"), NUM(""); private String name; Color(String name){ this.name = name; } public String getName(){ return name; } } public static void main(String args[]){ for(int i=0;i<10;i++){ Random rnd = new Random(); int id = rnd.nextInt(Color.NUM.ordinal()); // ランダム Color c = null; System.out.println("要素番号" + id + "の要素名は" /* + Colorのid番目の要素名 */ + "ファイル名は" + c.getName() + "です"); } } } ===========================

    • ベストアンサー
    • Java
  • XMLからデータを取得

    いつもお世話になっております。 XMLファイルに含まれたデータの中から、特定のデータを検索するプログラムを作りたいと思っております。 <AAA Name="テスト">    <BBB x="2" y="2"></BBB>    <CCC Num="0001"></CCC>    <CCC Num="0002"></CCC> </AAA> XMLデータの形式は↑みたいな感じで、これが100以上あり、CCCタグは0~5個までです。 フォームにテキストボックスを配置し、そこに検索したい語句を入れ、 AAAタグのNameの中身と合致したら、BBB、CCCの属性をすべて取得して表示するということをしたいのですが、 どうにも上手くいきません。 VB2008を使用しております。 方法をご存知の方、ご教授ください……orz

  • 親子関係にない要素を限定して取り出すには?

    <test>  <item id="001">   <name>foo</name>  </item>  <item id="002">   <name>bar</name>  </item>  <detail>   <itemid>001</itemid>   <yomigana>フー</yomigana>  </detail>  <detail>   <itemid>002</itemid>   <yomigana>バー</yomigana>  </detail> </test> 上記のようなXML文書から次のようなcsvファイルをつくろうと考えています。 フー,foo バー,bar つまり、「item要素の属性idの値」と「itemid要素の値」が同じものを対にして並べたいのですが、 これがなんともxslでうまいやり方が書けません。 (※実際には、item要素とdetail要素が上記のようにいくつも並びます。 item要素やdetail要素の数は状態によって可変ですが、item要素とdetail要素は必ず1対1で存在します。) どなたかご教示お願いします。 (※XML文書の構成改変はできません)

    • ベストアンサー
    • XML
  • phpのSimpleXMLでXMLの要素を参照したい。

    フォームからキーワードを受け取り、それを、xmlを参照しながらphpで出力したいのですが、最後の最後でつまずきます。 ------------------ <?php $doc = new domDocument(); // DOMDocumentオブジェクトにより、インスタンスを生成 $doc->load("./beta.xml"); // ファイルからXML文書を読みこむ $kywd = $_REQUEST['kywd']; // フォームからデータを受け取る $nodelist = $doc->getElementsByTagName('keyword'); // 指定した要素名(keyword)の全ての要素を取得 foreach ($nodelist as $node) { // 各要素を参照 if($kywd == $node->textContent){ // もし、フォームから受け取ったデータが要素と一致したら $xurl = $node->namespaceURI; // 要素の名前空間URLを取得して$xurlに代入 $xml = simplexml_load_file("./beta.xml"); // SimpleXMLによってXMLファイルをパースし、simplexml_elementオブジェクトを作成する $parent = $xml->children("$xurl"); // 指定したノードの子ノードの配列を取得 $hairetsu = $parent[0]->children("$xurl"); //取得した配列素$hairetsuに代入 foreach($hairetsu as $key=>$value) { // ちゃんと連想配列になっているか、ためしに出力 print ($key."→".$value."<br />"); } // 連想配列になっていることを確認 print $hairetsu["title"]; // しかし、キーを指定して値を取得しようとすると、なぜか得られない。 } } ?> 問題は最後のほうです。連想配列になっていることは確かに確認できる(titleというキーも、その値もある)のですが、連想配列のキーから値を参照しようとすると、なぜか値がNULLになっていて表示できません。私は趣味でプログラミングをする程度なので、おそらく基本的なところで間違っているのだと思いますが、それがどこだか分かりません。お教え願えないでしょうか。

    • ベストアンサー
    • PHP
  • XSLでノードの順番取得

    XSLでノードの順番の取得は可能でしょうか? 例えば、 <data> <title>xxxxxx</title> <item>xxxxxx</item> </data> のようなXMLで、<data>タグの一番最初の要素は、<title>タグというのは 調べられます? よろしくお願いします。

    • ベストアンサー
    • XML

専門家に質問してみよう