SimpleXMLでSJISのXMLファイルを読み込む

あるアプリが出力するXMLファイルを読み込んでWebページに表示する、って言うプログラムを組むことになり、いろいろ調査すると、こんなページを発見した。
http://www.doyouphp.jp/php5/php5_simplexml.shtml
SimpleXMLを使うとXMLの要素をオブジェクトとして扱うことができてとても便利らしい。
例えば、


山田

みたいなファイルがあると、"$xml->name"みたいな感じで要素にアクセスできる。これは確かに便利。
早速使ってみたところ、文字化けの嵐。さらに調べてみるとこんなページが。
SJIS、EUC-JP、JISなどの日本語をSimpleXMLで使う方法 - PHP::PEAR - dozo PukiWiki
どうやらSimpleXMLの内部ではUTF-8で処理されているらしい。今回読み込むのはShift-JISのファイルなので変換が必要だ。

#一度文字列に読み込んでからUTF-8に変換後、XML解析
$xmlDoc = File_Get_Contents($xmlfile);
$xmlDoc = mb_convert_encoding($xmlDoc, "UTF-8", "SJIS");
$xml = simplexml_load_string($xmlDoc);

いきなりsimplexml_load_file()でXMLファイルを読み込むのではなく、一度file_get_contents()でファイルの内容を文字列に読み込んでから、mb_convert_encoding()でSJISUTF-8変換を行い、その後simplexml_load_string()でオブジェクトに代入する。これでOK。
まだ試してないけど、書き込みも同じ要領なのかな?

でも確かに便利だけど、XMLの書式が変更された場合に対応するのが大変そうな気もする。
その辺、なんかうまいやり方があるのかな?

やっぱり俺はサラリーマン

ここ数日、はてブ界隈でプログラマについてのエントリをダラ見してたら、「やっぱ日々の努力って大事だなー」てな感想を抱いたのだが、さっきタバコ部屋で、「干物作り一筋40年」とか言うおじさんがテレビに出ているのを見て、「あぁ、俺は頑張ってないなぁ」としみじみ思ってしまった。
職人って言う人たちは、それこそ下手すると公私の区別無く四六時中、仕事に集中するような状況を経て一人前になるんだろうなぁ、と考えたら、「俺は家庭に仕事を持ち込まないぜ」なんてなことを言ってる俺はぜんぜんプログラム職人ではない。kogaidan氏言うところのプロ^2グラマかどうかも怪しいものだ。いや、もちろん仕事中は頑張って仕事しているわけだけど。
まぁなんて言うか、職人にはなれないし、経営者にもなれないけど、「普通のソフトウェアエンジニア」として自分ができることを頑張ればいいかなぁ、と、↓のエントリを見て思った次第。
がんばれ! ふつうのソフトウェアエンジニア - N2 ToolBox(跡地)