PHP simpleXML 改行やインデントの処理
2012年 10月 18日
今回は、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になりました^^;
プログラマーじゃないのに・・・
頑張りすぎじゃないのかなぁ。
素人プログラマーの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になりました^^;
プログラマーじゃないのに・・・
頑張りすぎじゃないのかなぁ。
by hiro__neko | 2012-10-18 18:05 | PGじゃない人間の備忘録