My Photo

« 盤上の夜 | Main | 秀丸エディタマクロの検索・置換系命令のinselectオプション »

September 15, 2014

PHPメモ046:XML処理 その2 エラー処理

関連記事:XML処理 その1 XMLをパースする

URIではない名前空間

XMLに名前空間があってその名前空間がURIの形式になっていない場合、パースするとワーニングが出る。
例として下記のコードを実行する。

$string = <<<'XML'
<?xml version="1.0" encoding="UTF-8"?>
<a xmlns="abc">
 <b>xxx</b>
</a>
XML;

$xml = simplexml_load_string($string);

すると以下のようなワーニングが出る。

Warning: simplexml_load_string() [function.simplexml-load-string]: namespace warning : xmlns: URI abc is not absolute in /var/www/test/xpath_test2.php on line 9
Warning: simplexml_load_string() [function.simplexml-load-string]: <a xmlns="abc"> in /var/www/test/xpath_test2.php on line 9
Warning: simplexml_load_string() [function.simplexml-load-string]: ^ in /var/www/test/xpath_test2.php on line 9

libxmlのエラーの抑止

XML関連のエラーやワーニング(libxmlエラー)の出力を抑止し、必要に応じてエラーの情報を取得するにはlibxmlエラーを無効にする libxml_use_internal_errors()、エラー配列を取得する libxml_get_errors()、libxmlエラーハンドラをクリアする libxml_clear_errors() を使用する。

bool libxml_use_internal_errors([bool $use_errors = false])
--
use_errors  ユーザーによるエラー処理を有効 (TRUE) または無効 (FALSE) にする。 
無効にすると、既に存在する libxml のエラーもすべてクリアする。

以下にサンプルコードを示す。

$string = <<<'XML'
<?xml version="1.0" encoding="UTF-8"?>
<a xmlns="abc">
 <b>xxx</b>
</a>
XML;

// ユーザによるエラー処理を有効にする
libxml_use_internal_errors(true);

$xml = simplexml_load_string($string);

foreach (libxml_get_errors() as $error) {
    print $error->message . "\n";
}
libxml_clear_errors();

出力は以下のようになる。

xmlns: URI abc is not absolute 

参考ページ:
PHP: libxml_use_internal_errors - Manual
PHP: libxml_get_errors - Manual

« 盤上の夜 | Main | 秀丸エディタマクロの検索・置換系命令のinselectオプション »

PHP」カテゴリの記事

Comments

Post a comment

(Not displayed with comment.)

TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/26461/60321554

Listed below are links to weblogs that reference PHPメモ046:XML処理 その2 エラー処理:

« 盤上の夜 | Main | 秀丸エディタマクロの検索・置換系命令のinselectオプション »

April 2017
Sun Mon Tue Wed Thu Fri Sat
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30            
無料ブログはココログ

日本blog村

  • にほんブログ村 IT技術ブログへ
  • にほんブログ村 アニメブログへ
  • にほんブログ村 サッカーブログ アルビレックス新潟へ

好きな音楽家

メモ

XI-Prof