cURL → XML コンバーター
cURL コマンドを貼り付けて、きれいな XML を取得。
このツールでできること
Chrome DevTools で HTTP 呼び出しを記録して「Copy as cURL」を押したあと、その同じリクエストを SOAP ベンダーや XML 中心のテストハーネスに送る必要が出たことはありませんか。そうなるといつも、ヘッダーと JSON ボディを手作業で XML 要素に組み直すことになります。このツールならそれを省けます。cURL コマンドを、バックスラッシュの行継続ごとそのまま貼り付ければ、メソッド、URL、クエリパラメータ、ヘッダー、認証、ボディまでリクエスト全体を記述する整形式 XML ドキュメントが得られます。
パーサーは日常的に使うフラグを理解します — メソッドの -X、各ヘッダーの -H、ボディの -d/--data、ベーシック認証の -u、Cookie の -b、そして読みやすい複数行コマンドで curl(1) が使うバックスラッシュ + 改行の継続。シングルクォート・ダブルクォート両方の引数を扱い、URL のクエリ文字列は独自の <QueryParams> ブロックに切り出されるので、各パラメータが独立した行で確認できます。
リクエストに JSON ボディが含まれる場合は、ネストされた <Body> 要素として埋め込まれます — JSON ペイロードのすべてのフィールドが独立した XML 要素になり、形状(オブジェクトはネスト、配列は繰り返し)が保たれます。form-urlencoded ボディはキー/値のペアに分解されます。cURL が認識しないもの — たまに出てくる --compressed、-k、あるいは渡した独自フラグ — は <Options> ブロックに集められるので、黙って捨てられることはありません。結果は SOAP クライアントに流し込めて、テストフィクスチャとしてコミットでき、ドキュメントにも貼れる XML ドキュメントです。
使い方
3 ステップ。cURL が 1 行でも、バックスラッシュ継続の 20 行でも同じように動きます。
cURL を貼り付け(またはサンプルを試す)
左のエディタに cURL コマンドを放り込んでください。\ の行継続はそのまま、ボディの周りのシングルクォートもそのまま、フラグも一切削らなくて大丈夫です。リアルな HTTP の例を先に見たければ サンプルを読み込む をクリックしてください。
Chrome、Firefox、Safari はいずれもネットワークパネルに「Copy as cURL」/「Copy as cURL (bash)」オプションがあります — その出力はそのまま貼り付けられます。Postman の「Code snippets → cURL」も動きます。
「変換」をクリック
緑色の 変換 ボタンをクリックします。ツールはコマンドをパースし、メソッド、URL、クエリ文字列、ヘッダー、認証、ボディを抽出して、一気に XML を組み立てます。処理中は短いローディングインジケーターが表示されます。
XML をコピー
右のパネルには、任意の HTTP 対応ツールや標準準拠の XML パーサーが受け入れる、インデント済みの整形式 XML が表示されます。SOAP リクエスト、テストフィクスチャ、API ドキュメントにそのままコピーして貼り付けてください。
実際に役立つ場面
DevTools 録音からの SOAP エンベロープ生成
ブラウザで REST 呼び出しを記録したけれど、下流のベンダーはまだ SOAP を話している。cURL を貼り付けて、出てきた XML をエンベロープボディの出発点にすれば、メソッド、URL、ペイロードの形はもう揃っています。
XML 中心のツール用テストフィクスチャ
SoapUI、ReadyAPI、古めのエンタープライズテストキットは XML の入力ファイルを欲しがります。動いている cURL を一度 XML に変換してフィクスチャとしてコミットすれば、2 つの並行フォーマットを手で維持する必要がありません。
レガシーなエンタープライズベンダーとの連携
まだ WSDL/SOAP や XML ゲートウェイで動いているパートナー API は cURL スクリプトを受け付けません。相手側でそのまま読み込める XML リクエストを渡せば、「あなたのエンドポイントは実際に何を期待しているのか」の往復を省けます。
API ドキュメントとスニペット
同じリクエストを README で 2 つの形 — 開発者向けの cURL と、トラフィックをレビューする運用チーム向けの XML — で示したい。cURL から XML を一度生成して、両者を同期させ続けましょう。
よくある質問
サポートされている cURL フラグは?
よく使うものです:HTTP メソッドの -X/--request、各ヘッダーの -H/--header(何度でも繰り返せます)、リクエストボディの -d/--data/--data-raw/--data-binary、ベーシック認証の -u/--user、Cookie の -b/--cookie。フラグの完全リファレンスは curl.se/docs/manpage.html にあります。
複数行のバックスラッシュ継続を扱えますか?
はい。行末の \ に続く改行は行継続として扱われます — bash と cURL が見るのとまったく同じです。DevTools やターミナル履歴から出てきたまま貼り付けてください。事前に 1 行にまとめる必要はありません。
JSON リクエストボディはどうなりますか?
JSON ボディ(content-type application/json、あるいは JSON としてパースできる -d '{...}' ペイロード)は <Body> 要素の中にネストした XML として埋め込まれます — 各フィールドが独立した要素になり、オブジェクトはネスト、配列は繰り返されます。JSON の文法は RFC 8259 に従い、形は XML 出力に 1 対 1 で保たれます。
URL エンコードやフォームボディは?
application/x-www-form-urlencoded のボディ(例:-d 'user=ava&pwd=x')は <Body> の中で個別のキー/値要素に分解されます。URL 自体のクエリ文字列パラメータは、各パラメータがはっきり見えるように別の <QueryParams> 要素に切り出されます。multipart(-F)ボディは、フィールド名とその値を持つパート 1 つにつき 1 要素として表現されます。
Chrome や Firefox の「Copy as cURL」出力を貼り付けても大丈夫?
はい — むしろメインのユースケースです。Chrome の「Copy as cURL (bash)」、Firefox の「Copy as cURL」、Safari の「Copy as cURL」はいずれもそのまま貼り付けられます。パーサーはクォートスタイルの違いを無視します。Postman の cURL コードスニペット出力も動きます。
パーサーが認識しないフラグが cURL にあったら?
不明または特殊なフラグ(--compressed、-k、--resolve、カスタムのロングフラグ)は、床に落とされる代わりに XML の末尾の <Options> ブロックに集められます。こうすれば元のコマンドに何があったかが正確に分かり、受信側でどう表現するかを自分で判断できます。
合わせて使いたいツール
cURL → XML はパズルの一部です。これらのツールと相性がいいです: