本文へ移動
Develop Tools
← 使い方ガイドへ戻る

XMLの構文エラーをチェックする方法|行・列から原因を探す

XMLがParseできないときは、エラー文だけで原因を決めず、行・列と直前の開始タグを確認します。一つの閉じ忘れが後続行のparsererrorとして現れるため、最初のエラーから一箇所ずつ直します。

XMLをDOMParserで構文チェックして整形または圧縮する流れ
XMLをDOMParserで構文チェックして整形または圧縮する流れ

XMLをブラウザ内で構文チェックする

貼り付けたXMLまたはXML系ファイルをDOMParserで解析し、行・列付きエラーを確認してから整形または圧縮できます。

XML整形・圧縮・構文チェックツールを開く

結論:最初のparsererrorと直前の構造から直す

DOMParserが返すエラー表現はブラウザで異なります。ツールは既知の行・列表現を共通化し、該当行とCaretを表示します。表示位置だけでなく一つ前の行、対応する開始タグ、属性の引用符まで戻ります。

XMLSerializerによる再出力では字句表現が変わることがあります。構文上の成功だけで完了とせず、元XMLとの差分と利用先での読込結果を確認します。

このツールは構文を自動修復せず、XSD・DTDの妥当性検証、XSLT実行、外部Resource取得も行いません。

原因と判断基準:エラー位置と原因位置のずれ

Parserは不正文字を見つけた瞬間だけでなく、要素を閉じられなくなった位置で停止します。Mismatched Tagや未閉じQuoteは後続タグで検出される場合があります。

エラー0件は整形式を示すだけで、必須要素、順序、型、Business Ruleの正しさは示しません。

確認対象見るポイント判断後の対応
タグ開始名と終了名・大小文字対応を揃える
属性引用符と重複名一つずつ閉じる
文字&・<・制御文字EntityまたはCDATAを検討
NamespacePrefix宣言範囲xmlnsを追加・修正

修正後に確認するチェックリスト

  • 開始タグと終了タグの対応
  • 属性値とEntity参照
  • Namespace PrefixとURI
  • CDATA・Comment・処理命令の保持
  • 利用先のSchemaまたは業務仕様

DevelopToolsのXML Formatterで確認できること

XML Formatterは入力したXMLをブラウザ標準のDOMParserでDocumentへ変換し、XMLSerializerを使って整形または圧縮します。処理対象は貼り付けたXMLと、.xml・.xsd・.wsdl・.svg・.xsl・.xsltファイルです。入力内容はサーバーへ送信しません。

項目現行ツールの対応
処理整形、圧縮、構文チェック。DOMとして解析できるかを確認
整形設定2・4スペース・タブ、改行維持・LF・CRLF、XML宣言の維持・追加・削除
保持設定コメント、CDATA、処理命令、空行、末尾改行。属性名順の並べ替えも選択可能
保護する構造名前空間付き属性、混在コンテンツ、xml:space="preserve"、DOCTYPE
診断構文エラーの行・列・周辺抜粋、要素・属性・名前空間・コメント・CDATA・最大階層の集計
未対応XSD・DTDによる妥当性検証、XSLT実行、XPath評価、外部DTD・外部Entityの取得

XMLSerializerによる再出力では、空要素の表記、属性の引用符、宣言周辺などの字句表現が入力と完全一致しない場合があります。意味が同じでも差分が出るため、元ファイルを残して結果を比較します。

整形式XMLとスキーマ妥当性を分けて考える

DOMParserが解析できることは、開始タグと終了タグ、属性、Entity参照、名前空間などがXMLの整形式条件を満たすという意味です。要素名や並び順が業務仕様に合うか、必須属性が存在するか、値がXSDの型に適合するかまでは判定しません。

XSD、DTD、WSDL、SVGなどには用途固有の規則があります。まずXML構文を直し、その後に実際のアプリケーション、XSD Validator、ビルド処理などで妥当性を検証すると、構文エラーと仕様違反を切り分けられます。

「XMLとして解析できる」と「XSDや利用先の仕様に適合している」は同じ判定ではありません。

XML構文エラーを安全に切り分ける共通手順

  1. 元XMLを複製し、Token、Password、個人情報、接続先などをテスト値へ置き換えます。
  2. 最初に構文チェックを実行し、表示された行・列と一つ前の開始タグを確認します。
  3. 閉じタグ、属性の引用符、&や<、名前空間Prefix、CDATA終端を一項目ずつ直します。
  4. 修正後に再チェックし、残った最初のエラーへ進みます。
  5. 構文Validになってから整形し、元XMLとの差分と要素・属性の集計を確認します。
  6. 最後にXSDや利用先アプリケーションで意味と制約を検証します。

Parserが示す位置は原因そのものではなく、構造を読み続けられなくなった位置の場合があります。直前のタグや属性まで戻って確認してください。

機密XML・外部参照・大きなファイルの注意点

貼り付け、ファイル読込、解析、整形、圧縮、コピー、保存はブラウザ内で完結します。LocalStorageへ保存するのはインデント、改行、Theme、Font、Editor Sizeなどの設定で、XML本文や処理履歴ではありません。

外部DTDや外部Entityを取得・展開せず、SYSTEMまたはPUBLIC識別子を検出した場合は警告します。ただし、保存したXMLを別のParserへ渡したときの安全性まで保証するものではありません。受け取り側でもDTD・外部Entity・XIncludeを無効化し、展開数や入力サイズを制限します。

50万文字を超える入力ではEditorの構文色分けを省略しますが、変換処理は続行します。DOMは入力文字列より多くのMemoryを使うため、処理可能なサイズは端末とブラウザの空きMemoryに依存します。

  • 署名、Secret、Token、個人情報を共有前にマスキングする
  • 元XMLを残し、整形結果は別名で保存する
  • DOCTYPEを含むXMLは受け取り側ParserのXXE対策も確認する
  • 大容量XMLは対象範囲を分割し、他の重いタブを閉じる

XML仕様と安全な解析の一次資料

整形式条件はW3C XML 1.0、PrefixとNamespace URIの関係はNamespaces in XML、ブラウザAPIはDOM Parsing and Serializationを基準にします。外部Entityの安全対策はOWASPのXXE Preventionも確認します。

具体例:エラー行の一つ前にある未閉じ属性を探す

<item name="sample><value>1</value></item>では、value付近でエラーが出ても原因はname属性のQuote不足です。

元ファイルを直接上書きせず、問題箇所を一つだけ修正して再チェックします。構文Valid後に整形結果と元XMLを比較し、要素名、属性値、名前空間URI、Text内容が意図どおりか確認します。

  1. XMLを貼り付けるか、対応するXML系ファイルを1件読み込みます。
  2. 構文チェックを実行し、行・列と周辺抜粋を確認します。
  3. 表示行から前へ戻り、name属性をname="sample"へ修正します。
  4. 再チェックしてErrorが0件になったことを確認します。
  5. 整形または圧縮を実行し、別名保存した結果を利用先でも検証します。

一度に複数箇所を直すと原因が分からなくなります。修正と再チェックを小さく繰り返します。

よくある質問

入力したXMLはサーバーへ送信されますか?
送信されません。XMLの読込、解析、整形、圧縮、構文チェック、コピー、保存はブラウザ内で処理します。保存されるのは表示・整形設定だけです。
構文チェックが成功すればXSDにも適合していますか?
保証されません。このツールはDOMParserによる整形式確認を行いますが、XSD・DTDの妥当性検証や利用先固有の項目検証は行いません。