XMLをブラウザ内で構文チェックする
貼り付けたXMLまたはXML系ファイルをDOMParserで解析し、行・列付きエラーを確認してから整形または圧縮できます。
XML整形・圧縮・構文チェックツールを開く結論:最初のparsererrorと直前の構造から直す
DOMParserが返すエラー表現はブラウザで異なります。ツールは既知の行・列表現を共通化し、該当行とCaretを表示します。表示位置だけでなく一つ前の行、対応する開始タグ、属性の引用符まで戻ります。
XMLSerializerによる再出力では字句表現が変わることがあります。構文上の成功だけで完了とせず、元XMLとの差分と利用先での読込結果を確認します。
このツールは構文を自動修復せず、XSD・DTDの妥当性検証、XSLT実行、外部Resource取得も行いません。
原因と判断基準:エラー位置と原因位置のずれ
Parserは不正文字を見つけた瞬間だけでなく、要素を閉じられなくなった位置で停止します。Mismatched Tagや未閉じQuoteは後続タグで検出される場合があります。
エラー0件は整形式を示すだけで、必須要素、順序、型、Business Ruleの正しさは示しません。
| 確認対象 | 見るポイント | 判断後の対応 |
|---|---|---|
| タグ | 開始名と終了名・大小文字 | 対応を揃える |
| 属性 | 引用符と重複名 | 一つずつ閉じる |
| 文字 | &・<・制御文字 | EntityまたはCDATAを検討 |
| Namespace | Prefix宣言範囲 | 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構文エラーを安全に切り分ける共通手順
- 元XMLを複製し、Token、Password、個人情報、接続先などをテスト値へ置き換えます。
- 最初に構文チェックを実行し、表示された行・列と一つ前の開始タグを確認します。
- 閉じタグ、属性の引用符、&や<、名前空間Prefix、CDATA終端を一項目ずつ直します。
- 修正後に再チェックし、残った最初のエラーへ進みます。
- 構文Validになってから整形し、元XMLとの差分と要素・属性の集計を確認します。
- 最後に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内容が意図どおりか確認します。
- XMLを貼り付けるか、対応するXML系ファイルを1件読み込みます。
- 構文チェックを実行し、行・列と周辺抜粋を確認します。
- 表示行から前へ戻り、name属性をname="sample"へ修正します。
- 再チェックしてErrorが0件になったことを確認します。
- 整形または圧縮を実行し、別名保存した結果を利用先でも検証します。
一度に複数箇所を直すと原因が分からなくなります。修正と再チェックを小さく繰り返します。
よくある質問
- 入力したXMLはサーバーへ送信されますか?
- 送信されません。XMLの読込、解析、整形、圧縮、構文チェック、コピー、保存はブラウザ内で処理します。保存されるのは表示・整形設定だけです。
- 構文チェックが成功すればXSDにも適合していますか?
- 保証されません。このツールはDOMParserによる整形式確認を行いますが、XSD・DTDの妥当性検証や利用先固有の項目検証は行いません。