• 締切済み

XMLからの画像指定

PHP初心者です。 現在、API経由で吐き出されるXMLをPHPにて処理しております。 その中で、{photo」の要素である画像「true_image」を、カテゴリー「category」中のコード「code」(ここではCtype→Atype→Btypeの順)を指定して画像を配置したいのです。 以下XML -------------------------------- <item> <photo> <true_image>001.jpg</true_image> <sub_image>001_2.jpg</sub_image> <category> <code>Atype</code> </category> </photo> <photo> <true_image>002.jpg</true_image> <sub_image>002_2.jpg</sub_image> <category> <code>Btype</code> </category> </photo> <photo> <true_image>003.jpg</true_image> <sub_image>003_2.jpg</sub_image> <category> <code>Ctype</code> </category> </photo> </item> -------------------------------- 今のところ、下記のコードで止まってしまっています。。 以下php ---------------------------------- <?php function h($str) { return htmlspecialchars($str, ENT_QUOTES); } $xml = simplexml_load_file("http://api.aaa.aaaa?key=aaaa.aa"); $hits = $xml->item foreach ($hits as $hit) { print<<<EOF <img src="{$hit->photo[0]->true_image}"> <img src="{$hit->photo[1]->true_image}"> <img src="{$hit->photo[2]->true_image}"> EOF; ?> ---------------------------------- xpathを使用して画像を特定する?のでしょうか。 正しいのかどうかも良く分からないで試しているため xpathの指定も何だか良く理解できず、方向性が良く分からなくなってしまいました。 恐らく初歩の初歩なのでしょうが、迷路に入ってしまったようです。 道先の案内でもして頂けると助かります。。

  • PHP
  • 回答数1
  • ありがとう数4

みんなの回答

  • dscripty
  • ベストアンサー率51% (166/325)
回答No.1

code 要素が Ctype の true_image 要素を XPath で。 ///true_image[..//code='Ctype']

tet_hag
質問者

お礼

遅くなり申し訳ありません。回答有難うございました。 回答がきっかけで無事、先に進めそうです。

関連するQ&A

  • xml画像データを表示するphp

    xml画像データを表示するphp下記で構文エラー....解りません ご教授宜しくお願い致します。 IMAGE.XML <?xml version="1.0"?> <photos> <photo url="http://www.kahokanko.com/menu/1.jpg"/> <photo url="http://www.kahokanko.com/menu/13.jpg"/> <photo url="http://www.kahokanko.com/menu/8.jpg"/> </photos> IMAGE.PHP <?php $xml = simplexml_load_file($req) foreach($req->photos->photo as $value){ printf('<img src="%s"><br>', $value->photo->URL); }

    • 締切済み
    • PHP
  • xmlにファイル出力

    サーバー内dirにある画像ファイルを自動取得してxmlに出力しています。ソース下記。 <?php $doc = new domDocument('1.0'); $doc->formatOutput = true; $root = $doc->createElement('item'); $root = $doc->appendChild($root); $files = glob( '*.jpg'); foreach ($files as $file) { $img = $root->appendChild($doc->createElement('image')); $img->appendChild( $doc->createtextNode($file)); } $doc->save("123.xml"); ?> 実行結果↓↓↓↓ <?xml version="1.0"?> <item> <image>37.jpg</image> <image>43.jpg</image> <image>45.jpg</image> </item> 上記の実行結果を下記の様にしたいのですが?    ↓↓↓↓ <photo url="http://demo/photos/37.jpg" /> <photo url="http://demo/photos/43.jpg" /> <photo url="http://demo/photos/45.jpg" /> よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • 指定したフォルダの画像を一括でプリロードしたい

    ページが表示されたときに、指定した画像をプリロードするようjavascriptで実装しています。 preloadの引数に1つ1つプリロードしたいファイルを書いていかないといけないので ファイル数が多くなると手間です。 例えば img/photo1.jpg img/photo2.jpg img/thumb.jpg image/photo1.jpg image/photo2.jpg image/thumb.jpg という具合にimgとimageのフォルダがあってimgにだけある画像ファイル全てを一括でプリロード したいです。どのようなソースをかけばいいでしょうか? また、指定したフォルダ以下の画像ファイルを一括でプリロードする関数などがあるのでしょうか? function preload(imgs){   for(var i = 0; i < imgs.length; i++){    var imgObj = new Image();    imgObj.src = imgs[i];    } } preload(["./img/photo1.jpg", "./img/photo2.jpg", "./img/photo3.jpg"]);

  • ★PHP?★画像を縦横比を変えずに表示

    画像を縦横比を変えずに表示したいです。 簡単な方法を教えてください。 PHPで作成してます。 下記の画像のサイズはバラバラです。 150*150の正方形の中に全て収めたいです。 <table> <tbody> <tr> <td><img id="imgtf" src="photo1.jpg" alt="" /></td> <td><img id="imgtf" src="photo2.jpg" alt="" /></td> <td><img id="imgtf" src="photo3.jpg" alt="" /></td> <td><img id="imgtf" src="photo4.jpg" alt="" /></td> <td><img id="imgtf" src="photo5.jpg" alt="" /></td> </tr> </tbody> </table> 何か方法はありますでしょうか?

    • ベストアンサー
    • PHP
  • オンマウスでの拡大画像の位置指定

    サムネイル画像にオンマウスした時の拡大画像の位置指定がよくわかりません。今の状態だとマウスを乗せた時に拡大画像がサムネイル画像とかぶってしまい、他のサムネイルが隠れてしまいます。できたら、拡大画像をサムネイル画像かぶらせず、左側に表示させたいのですがどう指定したらよいのでしょうか?ついでに拡大画像を右側、上、下に指定したい時の表示方法もあわせてアドバイスいただけたらありがたいです。 それと、サムネイル画像の下にちょっとしたコメントを記載したい時はどうしたら良いのでしょうか?どうかよろしくお願いします。 <script> var src1="image01.jpg" var src2="image1.jpg" var src3="image02.jpg" var src4="image2.jpg" var src5="image03.jpg" var src6="image3.jpg" var src7="image04.jpg" var src8="image4.jpg" </script> <p align="center"> <img src="image01.jpg" onmouseover="this.src=src2" onmouseout="this.src=src1"> <br> <br> <img src="image02.jpg" onmouseover="this.src=src4" onmouseout="this.src=src3"> <br> <br> <img src="image03.jpg" onmouseover="this.src=src6" onmouseout="this.src=src5"> <br> <br> <img src="image04.jpg" onmouseover="this.src=src8" onmouseout="this.src=src7"> <br> </p>

    • 締切済み
    • CSS
  • xmlでswfを読み込むには?

    flashでスライドショーを作っています。 同じフォルダにxmlファイルを作って指定した写真を取り込むようにしています。 そしてその写真のタイトルもフラッシュ内に表示されるところまで作りました。 xmlは以下のようなものです。 <?xml version="1.0" encoding="utf-8"?> <Photo> <picture image="photo01.jpg">タイトル01</picture> <picture image="photo02.jpg">タイトル02</picture> </Photo> そこで、画像とタイトルを読み込むだけでなく、 タイトルごとに別のswfファイル(ボタンを含んだswfファイル)も読みこむようにしたいのですが、 どのようにしたら良いでしょうか? わかる方いらっしゃいましたら、どうぞよろしくお願いします。

  • 連続でランダムに画像を表示させたい

    フェードで画像が切り替わるjQueryを使って画像を表示させています。 出てくる順番をランダムにしたいと思い、phpを記述しましたが、1枚目だけしか表示してくれません。 デモサイトがこちらです。 http://ijs.uh-oh.jp/demo/ ちなみにphpは、以下のように記述しました。 <figure id="fadein">  <?php $image=array( "image/photo01.jpg", "image/photo02.jpg", "image/photo03.jpg", "image/photo04.jpg", "image/photo05.jpg", ); $image = $image[rand(0, count($image)-1)]; echo '<img src=" '.$image.' " alt="">'; ?> </figure> 1枚だけでなく、ランダムで連続して表示させる方法をご教授ください。 phpは超初心者で自分なりに調べてみましたが、ギブアップしました(>_<)

    • ベストアンサー
    • PHP
  • JS switch文について

    JavaScript初心者です。 下記では、div内でphoto1.jpgを表示していますが、ここが別のコードで他の画像に書き換えられるため、下のjsで、画像がクリックされた際にsrcの中身を確認し、それに応じてアンカータグのhrefを書き換えようとしています。 ですが、参照の仕方が悪いのか、switch文が思惑通りに動いてくれません。 どなたか詳しい方、ご教授ください。よろしくお願いいたします。 $("#main a").click(function(){ var mimage = document.getElementById("main-img"); switch(mimage.src){ case "images/photo1.jpg": $("#main a").attr("href","sub1.html"); break; case "images/photo2.jpg": $("#main a").attr("href","sub2.html"); break; case "images/photo3.jpg": $("#main a").attr("href","sub3.html"); break; } }); <div id="main"> <a href="sub1.html"><img src="images/photo1.jpg" alt="" width="700" height="515" id="main-img" /></a> </div>

  • フルスライドの画像上に文字を入れたい

    すみません、初心者です。 htmlは、 <div id="container"> <div class="fullSlideShow"> <ul> <li><a href="#1"><img src="img/photo01.jpg" alt=""></a></li> <li><a href="#2"><img src="img/photo02.jpg" alt=""></a></li> <li><a href="#3"><img src="img/photo03.jpg" alt=""></a></li> <li><a href="#4"><img src="img/photo04.jpg" alt=""></a></li> <li><a href="#5"><img src="img/photo05.jpg" alt=""></a></li> <li><a href="#5"><img src="img/photo06.jpg" alt=""></a></li> </ul> </div> <div class="helo"> <h1>site title</h1> <p>abcdefg</p> </div> と書いてみました。CSSですが、 .fullSlideShow h1 { position: absolute; z-index:500; left: 40px; top: 40px; padding-right: 40px; font-size: 2em; line-height: 1.20; } .fullSlideShow h1 a.textlink { color: white; text-shadow: 1px 1px 3px rgba(0, 0, 0, 0.5); text-decoration: none; } としてみましたが表示されません。まだサイズや位置は気にせず表示されるように試してみているのですが、どうも文字が画面上に現れてくれません。 とりあえず、h1とpだけでも表示させたいのですが、教えて頂けないでしょうか。 どうぞ宜しくお願いします。

    • ベストアンサー
    • CSS
  • 画像を貼り出してその後、その画像をクリックすると大きく表示されるように

    画像を貼り出してその後、その画像をクリックすると大きく表示されるようにしたいのですが、どうしたら良いかわかりません。 <html> <head> <title>画像を大きくする</title> <script type="text/javascript"> <!-- var imagetachi = 5; //イメージの切り替え function kirikae(num){ document.main.src = "big/photo" + num + ".jpg"; } // --> </script> </head> <body> <center> <script type="text/javascript"> <!-- //サムネールの書き出し for (i=1; i <=imagetachi; i++) { document.write('<img src="small/photo' + i + '.jpg" onclick="kirikae(i)">'); } // --> </script> <hr> <img src="big/photo1.jpg" name="main"> </center> </body> </html> どうやらkirikae(i)をkirikae(' + i +')にすれば良いとまではわかったのですが、なぜ(' + i +')にしないといけないのかがわかりません。 (' + i +')にすると関数の処理が document.main.src = "big/photo" + + i + + ".jpg";になってしまいませんか?? 初心者なので+ i +の意味がよくわかりません。 よろしくお願い致します。

専門家に質問してみよう