XML形成式 - PHPプロ!Q&A掲示板

2607

  • 0P

XML形成式

質問日時 / 2010年3月8日 16:35    回答数 / 4件

Questioner:  mofmof  このエントリーをはてなブックマークに追加 

キーワード / simpleXML    DOM   

開発環境
OS:Windows7 32bit
PHP:5.3.1

DB側データ(MYSql)
row,unyo_id,comit_name
0,001,culc
1,002,sumb

という様なデータをXMLにて以下の様な表示にしたい。

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <result>
  3.   <row row="0">
  4.     <unyo_id>001</unyo_id>
  5.     <comit_name>culc</comit_name>
  6.   </row>
  7.  
  8.   <row row="1">
  9.     <unyo_id>002</unyo_id>
  10.     <comit_name>sumb</comit_name>
  11.   </row>
  12. </result>

上記の様なXMLを成り立たせるPHPをご教示ください。
もしくは、XMLを作成する上で基礎を付けたいので一から分かる様なサイトを
お教えください。よろしくお願い致します。

mofmof

この質問への意見の募集は締め切られ、ポイントは既に配分されました。
意見を投稿することはできますが、ポイントを受け取ることはできません。



ツリー一覧

┗A01shimix#どこから(どこまで)がわからないのかちょっと読み
 ┗A01-1mofmof>#どこから(どこまで)がわからないのかちょっと読
  ┗A01-1-1shimix>ピンポイントでDBからsimpleXMLで取得できる構文があ
   ┗A01-1-1-1mofmofご回答ありがとうございます。 まずは、マニュアルの

回答一覧

並び替え:

A01
answerershimix [3月8日 17:02]

#どこから(どこまで)がわからないのかちょっと読み取れませんが(汗

とりあえずSimpleXMLElementを作ってみてはどうでしょう

  1. $xml = new SimpleXMLElement('<?xml version="1.0" encoding="UTF-8" ?><result></result>');

あとはMySQLからデータを取得したLoopの中で($rowという配列にデータを拾ってくるとして)

  1. $newrow = $xml->addChild('row');
  2. $newrow->addAttribute('row', $row[0]);
  3. $newrow->addChild('unyo_id', $row[1]);
  4. $newrow->addChild('comit_name', $row[2]);

を繰り返せばいいように思います。最後は$xml->asXML()でXML文字列を取得すればどうにかなるんじゃないでしょうか(まったくの未検証ですのであしからず)。

  http://www.php.net/manual/ja/book.simplexml.php

この意見に回答する

ツリーへ TOPへ

A01-1
replyermofmof [3月8日 18:04]

>#どこから(どこまで)がわからないのかちょっと読み取れませんが(汗
すみません、すみません。全部が分からないんです。

参考URLを拝見させて頂きましたが、何というかプログラムの構文?全般が
分かりません。ピンポイントでDBからsimpleXMLで取得できる構文があれば
分かり易いのですが。

おとといきやがれ的な初心者ですみません。

この意見に回答する

ツリーへ TOPへ

A01-1-1
replyershimix [3月8日 18:37] (最終編集:3月8日 18:41)

>ピンポイントでDBからsimpleXMLで取得できる構文があれば分かり易いのですが。

全然わからないのに『答え』だけもらってどーするんでしょう?とりあえず動くかもしれませんが、すぐにお手上げになるだけだと思いますけど・・。

なお、MySQLからデータを引っ張ってくるくらいのサンプルはマニュアルにあります。まずはマニュアルを読んでください。プログラムの構文全般がわからないのであれば、なおさらです。関数の詳細(引数とか戻り値とか注意点とか)を覚える必要はありませんが、基本的な制御構文とどういう関数があるのかくらいは、覚えてください。百歩譲って、覚えてなくてもいいですから「マニュアルで引ける」状態でないと困ります。


以下マニュアルから丸写しして組み込みました(汗
  http://www.php.net/manual/ja/function.mysql-fetch-array.php
  1. <?php
  2. $xml = new SimpleXMLElement('<?xml version="1.0" encoding="UTF-8" ?><result></result>');
  3.  
  4. mysql_connect('localhost''mysql_user''mysql_password') or die('dberror: ' . mysql_error());
  5. mysql_select_db('mydb');
  6. $result = mysql_query('SELECT * FROM mytable order by row');
  7.  
  8. while ($row = mysql_fetch_array($result)) {
  9.     $newrow = $xml->addChild('row');
  10.     $newrow->addAttribute('row'$row['row']);
  11.     $newrow->addChild('unyo_id'$row['unyo_id']);
  12.     $newrow->addChild('comit_name'$row['comit_name']);
  13. }
  14. mysql_free_result($result);
  15.  
  16. print nl2br(htmlspecialchars($xml->asXML()))// デバッグ用の表示
  17. ?>

最後は、デバッグ表示でなければ(そのままブラウザに返すのであれば)
  1. if (!headers_sent()) {
  2.     header('Content-type: text/xml');
  3.     print $xml->asXML();
  4. }
でいいかもしれません(未検証です)。ファイルとして保存するのかもしれませんし、このあたりは用途次第です。

この意見に回答する

ツリーへ TOPへ

A01-1-1-1
replyermofmof [3月10日 10:30]

ご回答ありがとうございます。
まずは、マニュアルの件ですが心得ました。

>全然わからないのに『答え』だけもらってどーするんでしょう?
→ すみません。
 考え方の違いかもしれませんが、答えから考えた方を見つける様な動きをしているもので。
 シンプルなものから理解をするのがいいのかなと思っていました。

マニュアルはひける様にします。
ありがとうございした。

この意見に回答する

ツリーへ TOPへ

<<質問一覧へ



Pick Up Q&A

Q
PHPのHTML埋め込み記述について
 このエントリーをはてなブックマークに追加 
A
$_POST["data"] == "男" ? $val = "checked" : $val = "" ; の意味は以下と同じです。 if($_POST["data"] == "男"){ $val = "checked; } e...

>>続きを読む

kende様のご指摘通り、三項演算子を使用する際には、コードの複雑度などを考慮する必要がありますね。書きやすさと共に可読性も追求したいところですね。

▲解説者:岡本(アシアル株式会社 教育コーディネーター兼 システムエンジニア)