xmlの中に”&”が入っているとxPath出来ない時の対応方法

とあるXMLデータをPHPで扱うことになったんだけど、XMLデータの中に”&”が入っているとどうもいけないらしい。

$xml = simplexml_load_file("products.xml");
$products = $xml--->xpath("/rss");
print_r($products);

xPathする前にstr_replaceで&を置換しようにも、xmlデータにstr_replaceをどうやってかけていいのか悩んでいたら、file_get_contentsでXMLデータをそのまま読み込んで、str_replaceかけてsimplexml_load_stringで読んじゃえばOKとのアドバイスをもらった。

結局、次のようにすることで、無事に解決。

$xml = simplexml_load_file("products.xml");
$xml = str_replace("&", "アンド", $xml);
$products = $xml--->xpath("/rss");
print_r($products);