CodeKitHub
JSONツール

CSVとXMLの相互変換ツール

最終更新:

CSVをXMLに変換する際、各行は<row>要素になり、各列はヘッダー名を付けた子タグになります。逆の変換では、XML内で見つかった一意の子タグ名ごとに1列が抽出されます。CSVをXMLに、あるいはXMLをCSVに戻す変換を、同じツールの中で行えます。どちらの形式でも貼り付けて、必要な方向を選んでください。CSVの各行は<row>要素になり、各列が1つの子タグになります。XMLの入力はブラウザ自体のXMLパーサーを使って列に戻されます。すべてローカルで実行されるため、データがデバイスの外に出ることはありません。

このツールとは?

レガシーな業務システムや一部のSOAPベースのAPI、RSSに近いフィードなど、一部のシステムはXML形式のデータを期待しますが、表計算ソフトや大半のデータインポートツールはCSVを期待します。このツールは両者の間でデータを移動させます。CSV → XMLでは、各行がルート要素<rows>の中の<row>要素にラップされ、各列がヘッダー名を付けた子タグになります。XML → CSVはその逆で、見つかった一意の子タグ名ごとに1列を抽出します。

CSV側は適切な引用フィールド用パーサー(単純なカンマ分割ではありません)で解析されるため、カンマや改行、内部の引用符を含む値も正しく処理されます。XML側はブラウザ内蔵のDOMParser APIを使って解析されます。これはブラウザがXML文書を内部で解析する際に使うのと同じインターフェースであり、正規表現ベースの自作リーダーではないため、ネストしたタグや標準的なXMLエスケープも、実際のXMLパーサーと同じように処理されます。

XML要素名として無効な列名/タグ名(スペースを含む、数字で始まるなど)は、XML生成時に自動的にサニタイズされます。XML要素名にはCSVヘッダーよりも厳しいルールがあるためです。

出典:CSVの解析はRFC 4180に準拠し、XMLの構造はW3C XML 1.0仕様に準拠しています。

なぜこれを使うのか?

  • 双方向で動作 — CSVからXML、XMLからCSVへ、1つのツールで対応。
  • 正しいCSV解析 — カンマ、改行、エスケープされた引用符を含む引用フィールドを処理し、単純なカンマ分割ではありません。
  • 標準に基づくXML解析 — XML → CSVはカスタムの正規表現パーサーではなく、ブラウザ内蔵のDOMParserを使用するため、不正な形式のXMLは黙ってゴミデータを生成するのではなく、エラーとして報告されます。
  • 自動的なXMLエスケープ — CSV値に含まれる&や<などの特殊文字は、XML生成時に正しくエスケープされます。
  • 100%クライアントサイド — ここに貼り付けた内容がサーバーにアップロードされることはありません。

使い方

  1. ボックスにヘッダー行付きのCSVデータ、またはXMLデータを貼り付けてください。
  2. 「CSV → XML」をクリックしてXMLを生成するか、「XML → CSV」をクリックしてXMLを表に変換し直してください。
  3. 出力結果を確認してください — コピーするか、ファイルとしてダウンロードしてください。
  4. CSV → XMLの場合、各行が1つの<row>要素になり、各列につき1つのタグがルート<rows>の中にラップされます。

入力

name,age
Alice,30
Bob,25

出力

<?xml version="1.0" encoding="UTF-8"?>
<rows>
  <row>
    <name>Alice</name>
    <age>30</age>
  </row>
  <row>
    <name>Bob</name>
    <age>25</age>
  </row>
</rows>

各CSV行が1つの<row>要素になり、各列がヘッダー名を付けた子タグになります — このXMLを再度「XML → CSV」に通すと、元の2列の表が再構築されます。

実用的なヒント

  • XMLを期待するレガシーシステムやSOAP APIにデータを渡す場合:まずここでCSVエクスポートを変換し、得られたXMLをそのまま対象システムに貼り付けます。
  • 受け取ったXMLエクスポートを確認する場合:「XML → CSV」を実行すれば、完全なXMLエディタを使わなくても、素早く読みやすい表形式のビューが得られます。
  • XMLがフラットな<row><列>構造ではなく深くネストされた要素を使っている場合、このツールは任意のネスト構造をフラット化しません — 単純な列要素を含む行要素の1階層のみを想定しています。

なぜ自作のXMLリーダーではなくDOMParserを使うのか

XMLには、ネストされた要素、属性のクォート処理、&、<、>などの文字エスケープといった、本物の構造上のルールがあり、簡易な正規表現ベースのパーサーは、最も単純な入力以外では微妙に誤った処理をしがちです。ブラウザ内蔵のDOMParser APIを使うことで、このツールはXML解析をゼロから再実装するのではなく、ブラウザ自身がXML文書をレンダリングする際に使うのと同じ、標準準拠のXMLエンジンに依存します。また、閉じられていないタグや余分な山括弧といった不正な形式のXMLは、破損した不完全なCSVを黙って生成するのではなく、明確な解析エラーとして表面化します。

よくある質問

カンマや引用符を含むCSVの値も正しく処理できますか?

はい。CSVパーサーは、現在引用フィールドの内部にいるかどうかを追跡する真の状態機械パーサーであり、引用符内のカンマや改行(例:「Smith, John」)や、リテラルな引用符文字をエスケープするために使われる二重の引用符もすべて正しく処理します — すべてのカンマで単純に分割するわけではありません。

XMLはどのように解析されますか — カスタムの正規表現パーサーですか?

いいえ。XML → CSVはブラウザ内蔵のDOMParser APIを使ってXMLを実際のドキュメントツリーに解析します。これはブラウザが任意のXML文書を解析するのと同じ方法です。つまり、不正な形式のXMLは検出されエラーとして報告され、自作の正規表現パーサーがやりがちな、誤った出力を黙って生成することはありません。

有効なXMLタグではない列名はどうなりますか?

文字、数字、アンダースコア、ハイフン、ピリオド以外のものはすべてアンダースコアに置き換えられ、名前が本来数字や句読点で始まってしまう場合は先頭にアンダースコアが追加されます — XML要素名は、CSVヘッダーとは異なり、数字で始まったりスペースを含んだりすることができないためです。

私のデータはサーバーにアップロードされますか?

いいえ。両方向の変換はすべてブラウザ内のJavaScriptとして、ブラウザ自体のXML解析エンジンを使って実行されます — どこにも何も送信されないため、エクスポートしたビジネスデータや顧客データを扱う場合も安全です。

CSV → XML → CSVと変換すると、元のデータと完全に一致しますか?

列構成が一貫している整形されたCSVであれば、はい — 往復変換で値は保持されます。元のCSVで行ごとに列構成が一致していなかったり、ヘッダー名に特殊な文字が含まれていたりした場合、サニタイズされたタグ名によってヘッダーの正確な綴りは完全には保持されない可能性がありますが、データの値自体は保持されます。

関連ツール