XMLのパースメモ

PythonのElementreeやPHPのSimpleXMLでXMLをパースする際、xmlnsがキチンと書いてあるとネームスペースを正しく扱ってやらないといけなくて、ちょろっとしたコードを書きたいだけの場合は逆に面倒くさいことになる。それを回避する為にXML文字列をパースする前に以下のような置換をしてやると便利なのでメモ。

xmlnsを無視するTips

<?php
$xml_string = file_get_contents("sample.xml");
$xml_string = preg_replace('/\sxmlns=/', ' _xmlns=', $xml_string);
$xml = simplexml_load_string($xml_string);
?>

大体コレで上手くいく(笑

&が&amp;になってないのを回避するTips

自分で作るXMLなら気をつけもするんだが、他人の作ったXMLだと結構 & が &amp; になってなくてパースエラーでハマることがあるので、それの良くやる回避策がコレ。

<?php
$xml_string = file_get_contents("sample.xml");
$xml_string = preg_replace("/&([a-z]*)([^;#])/", "&amp;$1$2", $xml_string);
$xml = simplexml_load_string($xml_string);
?>