- ベストアンサー
phpからxmlの上書き
質問よろしくお願いします。 php5を使っています。 すでに置いてあるxmlをphpで上書きしたいのですがやり方がわかりません。 <?xml version="1.0"?> <cars> <car> <maker>TOYOTA</maker> </car> </cars> に書き込むと <?xml version="1.0"?> <cars> <car> <maker>TOYOTA</maker> </car> <car> <maker>NISSAN</maker> </car> </cars> となるようにしたいです。 どなたか分かる方教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは、とっても簡単なやり方 やってることは、tyo.xmlを読み込んで、</cars>というxmlエレメントを、新しい文字列に、置換することで、追加しています。 どう? 簡単でしょ。 <?php /* * xmlに追加しちゃうぞ *------------------------------*/ $xml_path = "tyo.xml"; $xml = file_get_contents( $xml_path ); $replace_key = "</cars>"; $add_xml = "<car>\n<maker>NISSAN</maker>\n</car>\n".$replace_key; $result = str_replace($replace_key,$add_xml,$xml); file_put_contents( $xml_path , $result ); ?>
その他の回答 (1)
- inu2
- ベストアンサー率33% (1229/3720)
Smartyなどのようなテンプレートエンジンを使うってのはどうでしょ? ------------car.xml <?xml version="1.0"?> {foreach from=$cars item=car} <cars> <car> <maker>{$car.maker}</maker> </car> </cars> {/foreach} ----------------- PHP側 //dummy data $cars['car'][] = array('maker'->'TOYOTA'); $cars['car'][] = array('maker'->'NISSAN'); $smarty = new Smarty(); $smarty->assign( 'cars',$cars ); $smarty->display('car.xml');//画面へ表示します または $xml = $smarty->fetch('car.xml');//画面へは出力せず、出力データ(この場合は完成したXML)を返します //出来上がった$xmlをあとは、煮るなり焼くなりご自由に・・・ 脊髄反射的に書いたので文法が間違ってるかもしれませんSmartyの詳しい使い方は http://www.smarty.net/manual/ja/api.fetch.php ここ読んでくささい もちろん、他のテンプレートエンジンをつかってもかまいませんよ
お礼
回答ありがとうございます! PHPをはじめたばかりなのでテンプレートエンジンを使うやり方というのははじめて知りました! そしてわざわざサイトのアドレスまで載せていただいて本当にありがとうございます!! このサイトを見て勉強させていただきます。
お礼
回答ありがとうございます。 existsさん、できました!しかも頂いたソースをいじっている内にPHPの勉強にもなりました。本当にありがとうございます!!