index.phpから外部関数に飛び、文字列を返してきてindex.phpでXML形式で表示するプログラムは?

このQ&Aのポイント
  • index.phpから外部関数に飛び、文字列を返してきてindex.phpでXML形式で表示するプログラムの書き方を教えてください。
  • index.phpでのXML表示方法がわかりません。
  • また、文字列をSimpleXMLで処理する方法も教えてください。
回答を見る
  • ベストアンサー

index.php から外部関数に飛び、文字列を返してきてindex.

index.php から外部関数に飛び、文字列を返してきてindex.phpで XML形式で表示するプログラムはどのように書けばいいんでしょうか? /* ---func1.php--- */ function func1($aa,$bb){ $xml_code = "<func1>\n"; $xml_code .= "<aaa>".$aaa."</aaa>\n"; $xml_code .= "<bbb>".$bbb."</bbb>\n"; $xml_code .= "</func1>\n"; return ($xml_code); } /* ---func2.php--- */ function func2($cc,$dd){ //DBからデータを取得して $sql = "SELECT ccc, ddd, eee, tel FROM tbl_a WHERE id = ".$id; $moji_db = ""; $result = mysql_query($sql); while ($row = mysql_fetch_assoc($result)){ $xml_code = "<func2>\n"; $xml_code .= "<ccc>".$row['ccc']."</ccc>\n"; $xml_code .= "<ddd>".$row['ddd']."</ddd>\n"; $xml_code .= "<eee>".$row['eee']."</eee>\n"; $xml_code .= "</func2>\n"; } return ($xml_code); } index.php で 両方の$xml_codeを出力する 以上のようなプログラムなんですけど、 index.phpでのxmlでの表示の仕方がわかりません。 /* ---index.php--- */ <?php // require func1.phpとfunc2.php function xml_make(&$xml ){ // DB 接続 // XML Header生成 echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>"."\n"; echo func1(); echo func2(); // XML Footer生成 // DB 切断 } ?> としてindex.phpを実行するとIEで以下のエラーが出ます。 (firefoxではでません。両ブラウザ共、ソースを表示するとXML形式にはなっていますが・・) 「XML ページを表示できません XSL スタイル シートを使用した XML 入力は表示できません。 エラーを訂正してください。 [更新] ボタンをクリックするか、または後でやり直してください。 -------------------------------------------------------------------------------- XML ドキュメント内では最上位の要素に限り、使用できます。 」 それと文字列($xml_code)をSimpleXMLで処理するにはどうしたらいいのでしょう?

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

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

  • ベストアンサー
  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.1

IEで以下のエラーが出ます。 =>XMLのドキュメントルートがないからじゃないですか。 header('Content-Type: text/xml; charset=utf-8'); echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>"."\n"; echo "<hoge>"; echo func1(); echo func2(); echo "</hoge>"; それから改行文字は不要だと思うんですけど(人間が見るなら見やすいですが) SimpleXMLで処理するにはどうしたらいいのでしょう? =>simplexml_load_string関数とかsimplexml_load_file関数です。 http://www.phppro.jp/phpmanual/php/book.simplexml.html SimpleXMLは、出来上がってるXMLを簡易にパースするのに使います。 新たにXMLを生成するなら、DOM関数では、 http://www.php.net/manual/ja/book.dom.php

age_03
質問者

お礼

丁寧に回答ありがとうございます。 ドキュメントルートを入れたらできました。 SimpleXMLとDOMの使い方の違いもいまいちわかってなかったので勉強になりました。

関連するQ&A

  • 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
  • CSVに外部テキストファイルを列として追加する方法

    こんにちは。 CSVファイル(base.csv)の先頭列に、別のテキストファイル(add.txt)の中身を新規の列として挿入したいと考えているのですが、よい方法がわかりません。。。 どうのような方法を使えば対応することができるでしょうか? どうぞよろしくお願いいたします。 ■CSVファイル(master.csv) title,developer_name,seller_name,primary_genre_name,application_url AAA,BBB,CCC,DDD,EEE AAA,BBB,CCC,DDD,EEE AAA,BBB,CCC,DDD,EEE AAA,BBB,CCC,DDD,EEE ■テキストファイル(add.txt) id 000 111 222 333 ↓ ■目標としたファイル(master.csv) id,title,developer_name,seller_name,primary_genre_name,application_url 000,AAA,BBB,CCC,DDD,EEE 111,AAA,BBB,CCC,DDD,EEE 222,AAA,BBB,CCC,DDD,EEE 333,AAA,BBB,CCC,DDD,EEE

  • エクセルで関数を組みたい。

    エクセルでA列に以下のようなデータがあるとします。 (1)この中で何種類のデータがあるのかを出し、   この場合は、AAA,BBB,CCC,DDD,EEEの5種類なので5と出し、 (2) その5種類の中で、1回だけのものが●件、2回のものが●件  (・・・大体15回くらいが多い回数になります。) という数字を出したいのです。 印刷を前提としてるためソートなどはできません。 (1)については、何とか解決いたしました。下記を使用します。 =COUNT(INDEX(1/(MATCH(A1:A1000,A1:A1000,)=ROW(A1:A1000)),)) (2)が全く分かりません。 皆様のお知恵をお貸しくださいませ。 宜しくお願い致します。 AAA AAA BBB CCC AAA DDD DDD BBB DDD DDD EEE EEE

  • awkやsed等で特定の文字間を抜き出す

    cat text aaaa bbbb <AAA> ccc ddd <BBB> eee とあるときに <AAA> ccc ddd <BBB> だけ抜き出したいです。 どのようにすればよいでしょうか?

  • 【超初歩】配列に格納した文字列を書き出すには?

    配列である、$arrMyString[] に、 aaa@example.com bbb@example.com ccc@example.com ddd@example.com eee@example.com といった5種類の文字列が格納されているとします。 これを、半角カンマ+半角スペースでつないで書き出す(echo)にはどのような方法がありますか。 なお、最後の文字列の後ろには不要です。 ■書き出しイメージ aaa@example.com, bbb@example.com, ccc@example.com, ddd@example.com, eee@example.com

    • ベストアンサー
    • PHP
  • エクセルで列にあるユニークなデータの個数が知りたい

    おはようございます。 エクセルでA列に以下のようなデータがあるとします。 この中で何種類のデータがあるのかを知りたいのです。 この場合は、AAA,BBB,CCC,DDD,EEEの5種類なので5という答えが欲しいのです。 ただし、A列に入るデータは非常に多岐(800種類以上)に渡ります。 また、印刷を前提としてるためソートなどはできません。 さらに1枚のシートにこのようなデータがいくつかあるので、その決まった範囲内で個数を抽出する必要があります。 なにとぞ皆様のお知恵をお貸しくださいませ。 よろしくお願いします。 AAA AAA BBB CCC AAA DDD DDD BBB DDD DDD EEE EEE

  • 変数の中身をある文字列を基準として分解したいです。

    変数の中身をある文字列を基準として分解したいです。 phpで変数の中身をある文字列を基準として分解したいです。 例として $value = "aaa,bbb,ccc,ddd,eee,"; $valeの中身を","を基準として取り出したいのですが可能でしょうか? 1件目:aaa 2件目:bbb 3件目:ccc 4件目:ddd 5件目:eee のような感じで画面に表示したいです。 ご教示、よろしくお願いします。

    • ベストアンサー
    • PHP
  • html構文をPHPの変数に正しく格納できない

    最近PHPを勉強していまして、変数の格納について、質問させていただきます。 <a href="aaa.index" onclick="window.open('bbb.php?id=ccc&adwares=ddd&url='); return false; rel='nofollow'"><img src="eee.jpg"></a> これは、とあるアフィリエイトプログラムの広告で、リンク先のページにリンクする時に、自分のidを送るというような構文(?)なのですが、 上の様な画像付リンク(アフィリエイトコード)をphpの変数に格納する場合、 <? php $url ='<a href="aaa.index" onclick="window.open(\'bbb.php?id=ccc&adwares=ddd&url=\'); return false; rel=\'nofollow\'"><img src="eee.jpg"></a>'; ?> として、 <?php echo $url ?> としましたが、新しいウインドウが出ずに、自分のサイトからのアクセスとして、 カウントされていませんでした。 どうすれば新しいウィンドウがでて、自分のサイトからのアクセスとして 認証されるでしょうか? それともそういう事は無理なのか?教えてください。

    • ベストアンサー
    • PHP
  • 何度も出現する文字列AAのうち、3番目と4番目のAAの間にある文字列を得たい

    以下のようなHTMLから、 <tr><td>AAA<td>BBB<td>CCC<td>DDD<td>EEE<td></tr> CCC という文字列だけを取り出したいとき、Perl、または 正規表現ではどのように記述したらよいのでしょうか?? Index関数を使ってみたのですが、うまくいきませんでした。 アドバイスをよろしくお願いします。

    • ベストアンサー
    • Perl
  • accessvbaで内容を結合して保存

    accessvba初心者です。質問なのですが下記のようなxmlファイルがあるとします。 <?xml version="1.0" encoding="shift_jis"?> <データ> <aaa> <bbb>1</bbb> <ccc>2</ccc> <ddd>3</ddd> <eee>4</eee> <fff>5</fff> </aaa> </データ> これをvbaにて<bbb><ccc><ddd><eee>の内容を取り出し結合して出来た1234をAテーブルのBフィールドにレコード保存したいのですが出来ますでしょうか? テーブルを開いてフィールドに保存する部分はなんとか理解出来たのですが要素を取り出して結合する部分がわかりません。 access2003を使用しています。よろしくお願いします。

専門家に質問してみよう