無料 XML → CSV コンバーター

自動検出でXMLデータをCSV形式に変換します。

データはデバイスを離れません

使い方

  1. XMLデータを左のエリアに貼り付けまたは入力します。
  2. ツールは繰り返し要素を自動的に検出し、ネストされた構造をフラット化します。
  3. 右側でデータをプレビューします。CSVをダウンロードをクリックして変換されたファイルを保存します。

よくある質問

ネストされた要素はどのように処理されますか?

ネストされた要素はドット表記でフラット化されます。例えば、「person.address.city」は単一の列ヘッダーになります。

要素の子の数が異なる場合はどうなりますか?

欠落した値はCSV出力で空白のままになります。一部の行に特定の値がなくても、すべての列ヘッダーは保持されます。

ツールは繰り返し要素をどのように検出しますか?

ツールは XML内で最も頻繁な要素タイプを自動的に識別し、それを行のソースとして使用します。

XMLからCSVへの変換がよく必要になる理由

XMLは冗長で階層的だが、CSVは平坦で密度が高い。sitemap.xml、RSS / Atomフィード、WordPressのエクスポートファイル、Appleのplist設定、Mavenのpom.xml依存関係リスト、GPSトラック(GPX)、Google Earth地点(KML)、銀行明細フォーマット(CAMT.053、XML形式のMT940)、ECサイトの商品フィード、医療HL7 v3、XBRLの財務レポート、MusicXMLの楽譜など、多くの有用な実データがXMLに存在しており、行に平坦化するまでほぼ分析できない。Excel、Google Sheets、SQLのLOAD DATA、Pandas、R、Tableau、Power BIはすべてCSVをそのまま読み込める。これらのツールにXMLを取り込むにはまず変換が必要だ。

根本的な不一致

XMLは任意のネストを許可しているが、CSVは二次元だ。汎用的なロスレスのXML→CSV変換は存在しない。どのコンバーターも、ツリーのどのレベルが「行」を表すか、深いネストをどう扱うかについて仮定を置く必要がある。よくある形状は2つある:

ツールはルートの最も頻繁な直接の子要素を見つけることで繰り返し要素を自動検出する。これは実際のXMLフィードの約90%で正しく動作する。XMLがそのパターンに合わない場合は、まず簡単なXPathスクリプトで前処理するか、繰り返しレコード形式に手動で編集する。

変換がうまくいくよくあるXMLフィード

属性、ネスト、繰り返し子要素の処理方法

エンコーディング:Excelの罠

XMLはエンコーディングを<?xml version="1.0" encoding="UTF-8"?>で宣言する。CSVにはエンコーディング宣言がないため、読み込む側が推測する。WindowsのExcelはデフォルトでWindows-1252を使用するため、Byte Order Mark(BOM)なしでUTF-8のCSVを開くと文字化けが発生する(「é」が「é」に、「ü」が「ü」に化ける)。修正方法:CSVの先頭にUTF-8 BOM()を付けて保存するか、ExcelのデータメニューのData → From Text/CSVインポートウィザードを使ってUTF-8を明示的に選択するか、UTF-8をBOMなしで正しく扱うGoogle Sheetsでファイルを開く。

区切り文字の選択

RFC 4180によると、標準的なCSV区切り文字はカンマだ。このツールはセミコロン、タブ、パイプもサポートしている。用途に合ったものを選ぶ:

RFC 4180に従い、選択した区切り文字、改行、二重引用符を含むフィールドは自動的に二重引用符で囲まれる。埋め込まれた二重引用符は二重化でエスケープされる。どの区切り文字を選んでも同じ引用規則が適用される。

プライバシー

XMLペイロードには機密情報が含まれることが多い:銀行明細のトランザクション、社内従業員データ、内部URLを明かすサイトマップ、医療記録、NDA付きの商品カタログ。ブラウザ組み込みのDOMParserはタブ内で完全に実行され、ネットワークリクエスト、サーバーへの往復、ログエントリはない。データはクリップボードから解析されたメモリ内ツリーに渡され、平坦化のために1回走査されて結果が出力テキストエリアに表示される。「ダウンロード」をクリックしない限り、ディスクには何も書き込まれない。

よくある間違い

  1. 繰り返しレコード形式でないXMLを貼り付ける。繰り返しのない単一の設定ファイルのようなドキュメントは使用可能なCSVに平坦化できない。このコンバーターは「類似アイテムのリスト」形式のXML向けだ。
  2. 属性プレフィックスが往復すると期待する。<product id="42">idという列になる(product@idproduct.idではない)。CSVを他の場所でXMLとして再インポートする場合は再マッピングが必要だ。
  3. 対象者に合わない区切り文字。フランス語版Excelでカンマ区切りのCSVを開くと単一の列に折り畳まれることがある。ファイルが最終的にどこで使われるかに合わせて区切り文字を選ぶ。
  4. ExcelのためのUTF-8 BOMを忘れる。BOMなしではWindowsのExcelで非ラテン文字が壊れて見える。BOMを追加するかGoogle Sheets / ウェブ版Excelでファイルを開くこと。
  5. XHTMLやDocBookを変換しようとする。混合コンテンツドキュメントXMLはきれいに平坦化できない。それらには表形式コンバーターではなく適切なXML/XSLTパイプラインを使う。
  6. フィールド値に存在するCSVインジェクションリスク。XMLにユーザー生成テキストが含まれている場合、ExcelやSheetsで出力を開くと、=+-、または@で始まるセルは数式として解釈される。OWASPはこれを実際の攻撃クラスとして記録している。ユーザー生成コンテンツのエクスポートを共有する前にサニタイズすること。
  7. 繰り返し子要素。XMLに<tags>ラッパーと複数の<tag>子要素がある場合、平坦出力ではきれいに表現できない。タグごとに1行に平坦化(親フィールドを繰り返して)するか、XMLを前処理してタグを区切り文字付き文字列としてインライン化する。

よくある質問

ツールはXMLをスキーマに対して検証するか?

いいえ。ブラウザ組み込みのDOMParserを使って整形式チェックのみを行う。XSDまたはRELAX NG検証が必要な場合はxmllint、Saxon、またはW3C XML Schemaバリデーターのような専用ツールを使う。CSVへの安全な平坦化には整形式チェックで十分だ。

XMLはどれくらいの大きさまで対応できるか?

ブラウザが保持できる量まで。サーバーが関与していないためサーバーサイドの制限はない。最新デバイスでは数十メガバイトが1〜2秒で変換される。数百メガバイトのXMLがある場合は変換前にバッチ分割する。単一のブラウザタブで処理するとメモリ制限に達することがある。

ツールはXML名前空間を処理できるか?

はい。<atom:link>のような名前空間付き要素は認識され、プレフィックスが列名に保持される。CSVヘッダーにプレフィックスが不要な場合は、出力に対して簡単な検索・置換を実行して除去する。

XMLはどこかにアップロードされるか?

いいえ。すべての解析と平坦化はブラウザ組み込みのDOMParserを通じてブラウザ内で行われる。テキストエリアの内容は送信・記録・保存されない。タブを閉じるとデータは消える。

このツールとJSON-to-CSVツールの違いは?

目標は同じ(階層データを行に平坦化する)だが入力フォーマットが異なる。XMLはより冗長で、属性を許可し、名前空間を持ち、特殊文字にエンティティ参照を使用する。XML-to-CSVコンバーターはそれらの機能を専門的に処理する。JSON-to-CSVコンバーターはオブジェクトの配列入力を期待する。JSONがあればそのツールを使い、XMLがあればこちらがより良い結果を出す。

逆変換(CSVからXML)は可能か?

このツールからはできないが、逆変換は一般的に簡単だ。行要素名を選び、各行をラップし、各列を子要素に変換するだけだ。csvxml.etreeを使った小さなPythonまたはNodeスクリプトで20行程度で処理できる。またはExcelのPower Queryのような構造化データツールを使えば、選択したスキーマでCSVをXMLにエクスポートできる。

関連ツール

JSON CSVコンバータ JSON→YAML変換 無料スプレッドシートビューアー