DOMDocumentコンポーネントを使ってRSSファイルを生成するPHPコードを書いたのですが、膨らみすぎてクラスにカプセル化したかったのですが失敗したので相談にきました なぜ dom を使用するのですか?
生成されたRSSは大体こんな感じです
http://www.xxx.com <説明>id: 1,user_name:,pass:123,real_name:Wood
http:// www.xxx.com
コードが冗長すぎます
$doc = new DOMDocument('1.0','utf-8');
$doc->formatOutput = true
// タグを作成します
// RSS タグを作成します
$rss = $ doc->createElement('rss')
//チャンネルの下にタグを作成します
$channel ;
$clink => {
- アウト'''''''''-' OUTpsOUTpsmbpsps アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウトアウトdoc->createElement('link');
$idescription = $doc->createElement('description ');
$real_name = $doc- >createElement('real_name');
/*ここでデータベース ループ呼び出しが必要です*/
//コンテンツを作成します
//item の下にラベルのコンテンツを作成します
$ c_ititle = $doc->createTextNode( $val['user_id']);
$c_ilink = $doc->createTextNode('http://www.xxx.com');
$c_idescription = $doc-> ;createTextNode('id:'.$ val['user_id'].',user_name:'.$val['user_name'].',pass:'.$val['pass'].',real_name:'. $val['real_name']);
//ユーザーの下にタグのコンテンツを作成します
$c_user_id = $doc->createTextNode($val['user_id']);
$c_user_name = $doc->createTextNode( $val['user_name']); ;
$c_user_pass = $doc->createTextNode($val['pass']);$c_real_name /属性を作成します
$attributes = $doc->createAttribute('id');
/*ここでデータベース ループ呼び出しが必要です*/
//item第1レベルタグの要素内容が継承される
$ititle->appendChild ($c_ititle);
$ilink->appendChild($c_ilink);
$idescription->appendChild($c_idescription); // ユーザーの第 1 レベルのタグの要素の内容は継承
$user_id->appendChild($c_user_id ; /
// 継承 c $ Channel-& GT; Appendchild ($ item);
// ITEM 1 レベルのラベル継承
$ item- & gt; APPENDCHILD ($ユーザー); タイトル) ;
$item->appendChild($idescription);
$attributes->appendChild($a_id); /
$item->appendChild($attributes)
// アイテムレベルのタグの継承
$user->appendChild($user_id); ->appendChild(
$c_ctitle = $doc->createTextNode('test rss');
$c_clink = $doc->createTextNode('http://www.xxx.com');
$c_cdescription = $doc->createTextNode ('This is a test rss');
// RSS バージョン属性値を作成
$rss_attribute_c = $doc->createTextNode('2.0'); // RSS バージョン属性を作成
$rss_attribute = $doc- >createAttribute('version');
//Inherit
//チャネルの第 1 レベルのタグの要素の内容が継承されます
$ctitle->appendChild($c_ctitle); clink->appendChild($c_clink);
$cdescription->appendChild($c_cdescription)
$rss_attribute->appendChild($rss_attribute_c);
//Ta gチャンネルの第 1 レベルのタグの継承
$channel->appendChild($clink);
//ルートノードを作成
$rss->appendChild($rss_attribute);
//xml を保存ファイル
$doc->save('hello .xml');
function connect_sql(){
$con = mysql_connect('localhost','root','123456') または die('mysql エラー :' .mysql_error());
mysql_select_db('test ');
mysql_query('set names utf8');
$sql = "SELECT * FROM test"; sql);
$ content = array();
while($row = mysql_fetch_array($query)){
$content[] = $row; }
方法を教えてくださいそれをクラスに変換してみました、いつもいいえ
ディスカッション (解決策) に返信
なぜ dom を使うのですか?
文字列を直接組み立てることはできないのでしょうか?いいね、いいね、いいね
文字列を直接組み立てることはできないのでしょうか?たとえば、$ar = array( array( 'id' => 1, 'user' => array('user_id' => 1, 'user_name' => '', 'user_pass' => 123, 'real_name' => 'aa'), 'title' => 1, 'link' => 'http://www.xxx.com', 'description' => 'id:1,user_name:,pass:123,real_name:aa', ), array( 'id' => 2, 'user' => array('user_id' => 2, 'user_name' => '', 'user_pass' => 456, 'real_name' => 'bb'), 'title' => 2, 'link' => 'http://www.xxx.com', 'description' => 'id:1,user_name:,pass:456,real_name:bb', ),);
<rss version="2.0"><item id="1"><id>1</id><user user_id="1" user_name="" user_pass="123" real_name="aa"><title>1</title><link>http://www.xxx.com</link><description>id:1,user_name:,pass:123,real_name:aa</description></item><item id="2"><id>2</id><user user_id="2" user_name="" user_pass="456" real_name="bb"><title>2</title><link>http://www.xxx.com</link><description>id:1,user_name:,pass:456,real_name:bb</description></item>
出力を直接エコーし、それを XML ファイルに書き込むのは簡単ですが、PHP には独自の domdocument コンポーネントがあるため、生成されたファイルを直接つなぎ合わせるよりも明らかに利点があると思います。まだわかりません