こんにちは。たいら(@tairaengineer2)です。
転職を繰り返し現在5社経験している、13年目エンジニアです。
この記事では、simplexml_load_string関数を実行したとき
1 |
Warning: simplexml_load_string(): Entity: line 1: parser error : XML declaration allowed only at the start of the document |
というエラーメッセージが表示されたときの原因とその解決策をお伝えします。
- 前提条件:実行環境について
- エラーメッセージ「parser error : XML declaration allowed only at the start of the document」が表示される原因
- エラーメッセージ「parser error : XML declaration allowed only at the start of the document」が表示させないようにする解決策
- まとめ:エラーメッセージ「parser error : XML declaration allowed only at the start of the document」が表示されたときはxml宣言の前を確認しよう!
前提条件:実行環境について
実行環境は以下の通りです。
OS | Windows11 |
---|---|
PHPのバージョン | 8.2.4 |
XAMPPのバージョン | 8.2.4 |
PHPを動かすためにXAMPPを使っています。
XAMPPのインストールは、下の記事をご参考ください。
エラーメッセージ「parser error : XML declaration allowed only at the start of the document」が表示される原因
エラーメッセージ「parser error : XML declaration allowed only at the start of the document」が表示される原因は、xml宣言がドキュメントの先頭で行われていないことが原因です。
以下がエラーの再現プログラムです。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<?php print('■simplexml_load_string関数確認<br >'); $xml_string = <<<EOT <?xml version="1.0" encoding="UTF-8" ?> <body> <test>テスト</test> </body> EOT; $xml = simplexml_load_string($xml_string); print_r($xml); ?> |
実行すると
とエラーとなります。
xmlをヒアドキュメントで設定していることがポイントです。
ヒアドキュメントとは、特殊な文字列を変数に設定するときに使用する機能です。
詳しくはこちらの記事をご参考ください。
ヒアドキュメントにはタブなどの特殊な文字も設定することができます。
なので
1 2 3 4 5 6 |
$xml_string = <<<EOT <?xml version="1.0" encoding="UTF-8" ?> <body> <test>テスト</test> </body> EOT; |
画像の赤枠部分も定義されている、と判断されます。
xml宣言は先頭でしなければならないのにタブが設定されているので、エラーとなっていました。
見やすくするためにタブを入れたのに裏目になってしまった、というわけです。
なので、ヒアドキュメントの定義を修正すれば解決できます。
エラーメッセージ「parser error : XML declaration allowed only at the start of the document」が表示させないようにする解決策
解決策は、xml宣言はタブなど入れずすぐ定義することです。
例えば先ほど書いたエラー再現プログラムは
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<?php print('■simplexml_load_string関数確認<br >'); $xml_string = <<<EOT <?xml version="1.0" encoding="UTF-8" ?> <body> <test>テスト</test> </body> EOT; $xml = simplexml_load_string($xml_string); print_r($xml); ?> |
↑のように、タブを入れずすぐxml宣言をすればエラーは表示されません。
修正した再現プログラムを実行すると
無事、正常に実行できました。
まとめ:エラーメッセージ「parser error : XML declaration allowed only at the start of the document」が表示されたときはxml宣言の前を確認しよう!
以上がエラーメッセージ「parser error : XML declaration allowed only at the start of the document」が表示されたときの原因と解決策でした!
あなたのご参考になったのなら、とても嬉しいです(*´▽`*)
ではでは~(・ω・)ノシ
コメント