XML to YAML — ブラウザで XML データを YAML 形式に変換
XML を YAML 設定形式に変換します。属性処理・名前空間の除去・インデントを切り替え可能。すべてブラウザ内で完結します。
XML to YAML は、現実のシステムでそう頻繁には出会わない 2 つのフォーマット間の変換です。XML はドキュメント指向データのための確立された交換フォーマットです——SOAP メッセージ、RSS フィード、XHTML 文書、金融トランザクションログ——値がメタデータとともに運ばれてくる領域で使われます。YAML は DevOps 時代の設定言語です——Kubernetes manifest、Ansible playbook、Docker Compose ファイル、CI/CD パイプラインの定義——人間が書き、機械が読む場面で使われます。XML から YAML への変換の多くは一度きりの作業です。XML 形式の API レスポンスをデプロイツール用の YAML 設定ファイルにする、あるいは XML データセットをデバッグのためにより読みやすい形式で覗く、といった場面です。
変換パスは JSON を中間表現として経由します。XML がツリーにパースされ、設定可能な属性規約と名前空間規約に従って JSON オブジェクトへ変換され、さらに YAML としてシリアライズされます。JSON の中間層は目に見えませんが、2 つの理由で重要です。第一に、このツールで選んだ属性規約が XML to JSON ツールと同じ規約である、ということです——@attr プレフィックスがデフォルトであり、最も相互運用性の高い選択です。第二に、XML to JSON マッピングに存在する制約(混合コンテンツの扱い、名前空間衝突時の挙動)が YAML 出力にもそのまま適用される、ということです。本ツールは XML フォーマット本来の制約を超える新たな制約は追加しません。
最後に受け渡しについて。YAML 出力を Kubernetes や Ansible のデプロイに使う場合は、デプロイ前にターゲットツールの linter(kubectl apply --dry-run または ansible-playbook --syntax-check)で検証してください。インデントが深く全体を一目で追いづらい場合は、リーフ値だけをフロースタイルに切り替えると見た目のネストを圧縮できます。逆方向の変換——YAML から XML——が必要な場合は、当サイトの YAML to XML ツールが同じ規約設定でラウンドトリップを扱えます。
使い方
XML を貼り付ける
入力欄に XML 内容をドロップします。パーサが整形式 (well-formedness) を検証し、エラーがあればその場で表示します。妥当な XML は JSON 表現を経由して YAML へ変換されます。
YAML の書式オプションを選ぶ
デフォルトのインデントは 2 スペースです。スタイルガイドに合わせる場合は 4 スペースへ切り替えます。出力スタイルはブロックスタイル(デフォルト、可読性が高い)とフロースタイル(コンパクト、インライン括弧)から選べます。
YAML をコピーまたはダウンロードする
YAML をクリップボードにコピーするか、.yaml ファイルとしてダウンロードできます。出力は YAML 1.2 に準拠し、YAML 構文ハイライト対応のあらゆるエディタで開けます。
よくある質問
XML 属性は YAML にどう変換されますか?
デフォルトでは、XML 属性には `@` プレフィックスが付され、子要素と区別されます。`<book id="123"><title>Dune</title></book>` は `@id` と `title` をキーとする YAML マッピングになります。設定では別の属性規約(独立した `_attributes` キー、または属性を完全に除去)も選択できます。
変換器は XML 要素の順序を保ちますか?
はい。YAML 1.2 仕様ではマッピングはキーの順序を保持し、変換器もソース XML に現れた順序でキーを出力します。キーの順序が意味を持つ設定ファイルではこの挙動が重要になります。
XML 名前空間は YAML 出力でどう扱われますか?
デフォルトでは名前空間前缀が除去され、要素はローカル名で識別されます。異なる名前空間の 2 つの要素が同じローカル名を持つ場合、後に現れた要素が先に出現したものを上書きします。「プレフィックスを保持」モードを有効にすれば、これらを別個のキーとして残せます。
変換時に XML コメントはどうなりますか?
XML コメントは破棄されます。YAML は `#` 文字によるコメントをサポートしていますが、XML コメントの位置を YAML 上の等価な位置へ確実に対応付ける方法はありません。変換後に構造を確認し、必要に応じてコメントを手動で追加してください。
制限事項
- YAML anchor / alias は出力されません繰り返される XML 構造は、繰り返しの YAML マッピングとして出力されます。変換器は繰り返しを検出せず、YAML anchor(`&anchor`)や alias(`*anchor`)を生成しません。DRY な設定ファイルが必要な場合は、変換後に手動で alias を追加してください。
- 5 つの標準以外の XML エンティティ参照は失敗しますデコードされるのは `&`、`<`、`>`、`'`、`"` の 5 つだけです。DTD で定義されたカスタムエンティティは展開されず、それらを含むとパースエラーになります。
- CDATA とテキストノードは暗黙的にマージされますCDATA セクションと通常のテキストノードは、YAML 出力では 1 つの文字列値としてまとめられます。CDATA で囲まれた値と素のテキスト値の区別は失われます。
プラットフォーム別の注意点
- macOS
- コマンドラインで行う場合は `yq -p xml -o yaml input.xml` で変換できます。Homebrew で yq をインストールする手間が作業本体より大きくなるような単発変換には、ブラウザツールの方が向いています。
- Linux
- CLI での同等手段: `xq . input.xml`(`pip install yq` で導入)で XML を jq 経由で YAML にできます。チャット画面やドキュメントページから貼り付けてアドホックに変換するような用途にはブラウザツールが便利です。
- Web
- 処理はすべてクライアントサイドで実行されます。XML 内容がアップロードされることはありません。ページの読み込み完了後はオフラインでも動作します。