XML CDATAもパース(LIBXML_NOCDATA)

「simplexml_load_file()」「simplexml_load_string()」を使ってXMLの中にいるCDATAの値を取得する

作成日:2019-07-03, 更新日:2019-07-03

基本

「simplexml_load_file()」「simplexml_load_string()」の第2引数、第3引数を指定。

▼CDATAの中をも取得

simplexml_load_file(XMLのPATH, 'SimpleXMLElement', LIBXML_NOCDATA);

▼CDATAの中をエスケープしたくないとき

simplexml_load_file(XMLのPATH, null, LIBXML_NOCDATA);

「simplexml_load_string()」も同様。

めも

$url = 〇〇〇〇;
$source = file_get_contents($url);

$domDocument = new DOMDocument();
libxml_use_internal_errors(true);
//$domDocument->loadHTML($source); // HTMLの読込み
$domDocument->loadXML($source);  // XMLの読込み
libxml_clear_errors();
$xmlString = $domDocument->saveXML();

// XMLをパース
$xmlObject = simplexml_load_string($xmlString, 'SimpleXMLElement', LIBXML_NOCDATA);
if($xmlObject ===  FALSE) {
  echo 'err';
  exit;
}

// 連想配列化
$aryDom = json_decode(json_encode($xmlObject), true);