[PHP-users 30374] Re: xmlを使うと真っ白になる

朧月 oboro @ deneb.freemail.ne.jp
2006年 9月 20日 (水) 09:19:30 JST


お世話になってます、朧月です。

papa pahoo wrote (2006/09/19 23:47):

> パパぱふぅです。差し支えなければ、使用しているXML関数を紹介してください。

一覧を作るコードは、以下のようになってます。

 header('Content-type:text/html;charset=EUC-JP');
	

 	//現在の日時を取得
 	$Pdate = time();
 	
 	//xmlファイル処理
	$xmlfile = "xmldata/database.xml";
	$dom = domxml_open_file($xmlfile);
	$doc = $dom->document_element();
	
	//現在のデータ読み取り
	$datas = $doc->get_elements_by_tagname("data");
	foreach($datas as $data){
		$obj = $data->get_elements_by_tagname("file-name");
		$xfile_name = $obj[0]->get_content();
		$obj = $data->get_elements_by_tagname("content");
		$xcontent = $obj[0]->get_content();
		$obj = $data->get_elements_by_tagname("up-date");
		$xup_date = $obj[0]->get_content();
		
		//文字コードをそろえる
		$xfile_name = 		 		     			
mb_convert_encoding($xfile_name,'EUC-JP','UTF-8');
		$xcontent = 					  mb_convert_encoding($xcontent,'EUC-JP','UTF-8');
		$xup_date = mb_convert_encoding($xup_date,'EUC-JP','UTF-8');
		
		//古いデータを削除
		$Ddate = strtotime($xup_date);
		$Cdate = $Pdate - $Ddate;
		
		if ($Cdate > 90*24*60*60){
			//ファイルを削除
			$path = "data/" . $xfile_name;
			unlink($path);
			
			//XMLファイルの登録を削除
			$doc->remove_child($data);
		}	
	}
	
	//保存して開き直し
	$dom->dump_file($xmlfile,FALSE,TRUE);
	$dom = domxml_open_file($xmlfile);
	$doc = $dom->document_element();
	
	echo "<h3>アップロードファイル一覧</h3>";
	echo "<table border=1 >";
	echo "<tr><td width=200>ファイル名</td><td width=400>ファイル内容</td>" .
			"<td width=200>アップ日(年-月-日 時:分:秒)</td></tr>";
			
	//現在のデータ読み取り
	$datas = $doc->get_elements_by_tagname("data");
	foreach($datas as $data){
		$obj = $data->get_elements_by_tagname("file-name");
		$xfile_name = $obj[0]->get_content();
		$obj = $data->get_elements_by_tagname("content");
		$xcontent = $obj[0]->get_content();
		$obj = $data->get_elements_by_tagname("up-date");
		$xup_date = $obj[0]->get_content();
		
		//文字コードをそろえる
		$xfile_name = mb_convert_encoding($xfile_name,'EUC-JP','UTF-8');
		$xcontent = mb_convert_encoding($xcontent,'EUC-JP','UTF-8');
		$xup_date = mb_convert_encoding($xup_date,'EUC-JP','UTF-8');
		
		//テーブルにデータを追加
		echo "<tr>";
		echo "<td>" . "<a href=./data/" . $xfile_name . " >" . $xfile_name .
"</a></td>";
		echo "<td>" . $xcontent . "</td>";
		echo "<td>" . $xup_date . "</td>";
		echo "</tr>";
		
	}
	echo "</table>";
	
	echo "<br /><br />";
	
	//アップロードページへ戻る
	echo "<form enctype='multipart/form-data' action='index.html'>
 			<input type='submit' value='アップロードのページへ戻る' />
 		  </form>";

なんか見づらくて申し訳ありません。こう、段落の編集がうまくいきません。
	
> 以前、WindowsXP + PHP 4.4.x を使っていて、domxml_open_file で直接XMLファ
> イルを開くと、開けるときと開けないときがありました。なぜ場合分けが発生し
> てしまうのか、とうとう原因が掴めなかったので、以下のように、いったん文字
> 列変数 $str に取り込んでから、DOM XML関数に渡したことがあります。
> $str = "";
> while (!feof($fp)) {
>     $s = fgets($fp);
>     $str .= $s;
> }
> $dom = domxml_open_mem($str);

うーん、結果的にですが、私のコードはdomxml_open_file()に文字列を渡すよう
なコードになってる気がします。


-- 
朧月
mailto:oboro @ deneb.freemail.ne.jp


PHP-users メーリングリストの案内