XML解析
XMLの構文を検証し、読みやすく整形するツール。XPathで必要な要素だけを取り出せるため、RSSフィード、SOAPレスポンス、Androidやsitemapの設定ファイルの確認に使える。
読み込み中…
使い方
- 解析したいXMLを入力する。
- 構文エラーがある場合はエラーメッセージと該当行・列を確認する。
- 整形結果のインデントを選び、コピーまたは保存する。
- XPathを入力し、該当する要素・属性・テキストを確認する。
こんな用途に
- RSSフィード、SOAPレスポンス、sitemap.xmlの構文を確認したいとき。
- 1行に詰まったXMLを読みやすく整形したいとき。
- 大きなXMLから特定の要素や属性の値だけを取り出したいとき。
仕組み
- ブラウザ標準のDOMParserでXMLを解析し、parsererror要素からエラー位置を取得。
- 解析結果のDOMを再帰的にたどり、指定したインデントで出力。空白のみのテキストは除去。
- XPathはブラウザ標準のdocument.evaluateで評価。
確認ポイント
- XMLは大文字小文字を区別し、すべての要素を閉じる必要がある。HTMLの<br>はXMLでは<br/>と書く。
- 本文に「&」「<」を書く場合は&・<にエスケープするか、CDATAセクションで囲む。
- XPathの//titleは全階層のtitle要素、@idは属性、text()はテキストを表す。
手元でやるには
XMLを検証して整形
必要環境: xmllint(macOS標準搭載、Linuxはlibxml2-utils)xmllint --format input.xmlXPathで抽出
必要環境: xmllintxmllint --xpath '//book/title/text()' input.xmlよくある質問
整形すると空白が変わる?
空白のみのテキストを除去し、テキストの前後の空白を削る。<p>a <b>b</b></p>のようにテキストと要素が混在する文書では、単語間の空白が変わる場合がある。
名前空間付きのXMLをXPathで検索するには?
ルート要素で宣言された接頭辞(soap:Bodyなど)はそのまま使える。接頭辞のないデフォルト名前空間の要素は *[local-name()='item'] のように指定する。