PHPでDOMElement書き換え時に'No Modification Allowed Error'

2018/11/22 11:30
PHP 
(この記事の文字数: 716)

PHP でサイトマップ用の XML を作ろうとしていて、DOMElement に setAttribute() を実行したら以下のエラーが出たので原因をメモしておきます。


Uncaught exception 'DOMException' with message 'No Modification Allowed Error'

変更が許可されていないらしいです。以下がエラーが出た時のコードです。


$xmlDoc = new DOMDocument("1.0", "UTF-8");
$urlsetElem = new DOMElement("urlset");
$urlsetElem->setAttribute( 'xmlns', 'http://www.sitemaps.org/schemas/sitemap/0.9' );
$xmlDoc->appendChild( $urlsetElem );

どうやら、DOMElement の setAttribute() は親のドキュメントに紐づいていないと変更が許可されないらしいので、以下のように変更しました。


$xmlDoc = new DOMDocument("1.0", "UTF-8");
$urlsetElem = new DOMElement("urlset");
$xmlDoc->appendChild( $urlsetElem );
$urlsetElem->setAttribute( 'xmlns', 'http://www.sitemaps.org/schemas/sitemap/0.9' );

これでエラーは出なくなりました。変更許可がない、だけじゃなくて、変更許可がなくなる要因も教えてくれていたら、神エラーメッセージでした。


  このエントリーをはてなブックマークに追加  

<<「Web 開発」の記事一覧に戻る

コメント(0 件)


関連記事