XMLパースエラー: ドキュメント要素の後ろに不正な文字列があります

Webデザイン

XMLファイルを操作していると、次のようなエラーに遭遇することがあります。

XML パースエラー: ドキュメント要素の後ろに不正な文字列があります

この記事では、このエラーの原因と対処法について、具体例を交えて詳しく解説します。

エラーの原因

XMLは「正しい構造」が求められるデータ形式です。
このエラーは、XMLドキュメント内に複数の「ルート要素」が存在している場合に発生します。

ルート要素とは?

ルート要素とは、XMLドキュメント全体を包む最上位の要素のことです。
XMLでは、ドキュメントに1つのルート要素だけが許されます。

例えば、次のXMLコードではルート要素が複数存在しているため、エラーが発生します。

<?xml version="1.0" encoding="UTF-8"?>
<item>
  <name>aaa</name>
  <price>100</price>
</item>
<item>
  <name>bbb</name>
  <price>300</price>
</item>

エラーの解決方法

上記のコードでは、<item> 要素が複数存在し、それぞれが「独立したルート要素」となっています。
この問題を解決するには、全体を1つのルート要素で包む必要があります。

以下は、修正後のコード例です。

<?xml version="1.0" encoding="UTF-8"?>
<data>
  <item>
    <name>aaa</name>
    <price>100</price>
  </item>
  <item>
    <name>bbb</name>
    <price>300</price>
  </item>
</data>

修正後のコードでは、<data> 要素をルート要素として使用し、その中にすべての <item> 要素をネストさせています。
これでエラーは解消されます。

よくある間違いと注意点

1. 余計なテキストや改行

XMLファイル内に不要なテキストや改行が含まれているとエラーになる場合があります。

NG例:

<?xml version="1.0" encoding="UTF-8"?>
<data>
<item>
<name>aaa</name>
<price>100</price>
</item>
<item>
<name>bbb</name>
<price>300</price>
</item>
</data>
<extra>不正なデータ</extra>

修正例:

<?xml version="1.0" encoding="UTF-8"?>
<data>
<item>
<name>aaa</name>
<price>100</price>
</item>
<item>
<name>bbb</name>
<price>300</price>
</item>
</data>

2. 閉じタグの忘れ

閉じタグを忘れると、同様にXMLパースエラーが発生します。
ツールやエディタのバリデーション機能を活用して確認しましょう。

まとめ

XMLのエラー「ドキュメント要素の後ろに不正な文字列があります」は、複数のルート要素や不正なデータが原因です。
以下のポイントを確認してエラーを解消しましょう:

  • 1つのルート要素で全体を包む
  • 不要なデータや改行を削除する
  • 閉じタグの有無を確認する

適切なXML構造を保つことで、このエラーを回避し、スムーズにXMLデータを扱えるようになります。

タイトルとURLをコピーしました