PHP simpleXML 改行やインデントの処理

今回は、PHPでようやくXMLに書き込んだりできるようになった
素人プログラマーのSimpleXMLで困った事の備忘録。

◆やりたい事
XMLファイルにSimpleXMLで書き込む際に
綺麗にインデントしたい。

◆問題点
SimpleXMLだけだと無理

◆解決方法

SimpleXMLでXMLに書込をすると
どうしても、書き込まれたXMLが、改行やインデントがなくなってしまい
1行にズバーと書かれてしまいます。

そんなときに見つけたのがこちら。
SimpleXMLのSimpleXMLElement::asXML()をきれいにインデントする関数

今回は、この関数を別ファイルにして使いたいので
function cleanUpXML($string)
{
}
以外を削除して、任意の名前で保存。

何故か、S-JISになってしまうので
return $string;直前で

$string = mb_convert_encoding($string, "UTF-8", "auto");

を追記しておきました。
auto は微妙な気がするけれど、動いたからいいや。

で、この関数を使いたいファイルでインクルードして
include 'hogehoge.php';

書き込みたいXMLを読み込んで
$file = @f o p e n('hogehoge.xml', "w");

asXML()に、XMLに登録したいデータをいれた後に
cleanUpXML()関数を読み込んで、returnを $xml2 で受け取って
$xml2 = cleanUpXML($xml->asXML());

書込処理をして
@fwrite($file, $xml2);

ファイルを閉じる
@fclose($file);

超綺麗なXMLになりました^^;

プログラマーじゃないのに・・・
頑張りすぎじゃないのかなぁ。
[PR]

by hiro__neko | 2012-10-18 18:05 | PGじゃない人間の備忘録  

<< せい家 大山店 image/pjpeg IEさ... >>