作成日:2019-08-26, 更新日:2019-09-24
経緯
・以前につくったソースをコピペしてもXMLがパースされない
・原因は不明
→「とりあえずエラーを表示させよう」となった。
原因
このときのエラーは・・・以前につくったソースはHTMLのタグをパースということで、「loadHTML()」を使ってた
→XMLをHTMLとして受け取ったせいで余計なタグが補完されてしまいエラー。
※「loadHTML()」を「loadXML()」に差し替え。
基本
「libxml_get_errors()」でエラーが取得できる。
サンプル
$source = '〇〇〇〇〇'; $domDocument = new DOMDocument(); libxml_use_internal_errors(true); $domDocument->loadXML($source); // XMLのパース // $domDocument->loadHTML($source); // HTMLをXMLとしてパース libxml_clear_errors(); $xmlString = $domDocument->saveXML(); $sxe = simplexml_load_string($xmlString); if (!$sxe) { // パースエラーのとき foreach(libxml_get_errors() as $error) { echo $error->message . "\n"; } exit; } else { // 連想配列化 $aryXML = json_decode(json_encode($sxe), true); }