ToolConvoyToolConvoyv2.6
DATA

YAML を XML に変換 — ブラウザで YAML 設定を XML マークアップに変換

YAML データを XML マークアップに変換します。ルート要素や属性のヒューリスティック、美化出力を設定可能。すべてクライアントサイドで動作し、アップロードも回数制限もありません。

● ローカル動作 · ゼロコピーパイプラインページ読み込み以降のツールによる通信:0件

YAML は人間が書くためのフォーマットであり、XML はエンタープライズシステムが受け取るフォーマットです。この両者の間にあるギャップこそ、このツールが存在する理由です。DevOps チームはインフラを YAML(Kubernetes manifest、Ansible playbook、Terraform 変数)で定義します。YAML はコンパクトで読みやすいからです。一方でレガシーな監視システムは、同じデータを XML として受け取ります。XML が汎用的な交換フォーマットだった時代にその監視システムが作られたためです。YAML から XML への変換は、まさにこのギャップを橋渡しします。人間が読みやすく書くために作られた YAML 構造を受け取り、XML を理解するあらゆるシステムが受け取れる XML ドキュメントを生成します。

変換では JSON を中間表現として利用します。YAML を JSON に解決し、JSON を XML にシリアライズする、という流れです。そのため、属性の規約は JSON-to-XML ツールのものと同一です。@ で始まる YAML キーは XML 属性になり、通常のキーは子要素になります。この規約はいずれの標準にも属しませんが、npm と Python のエコシステムでは事実上の標準となっており、ポータビリティの観点でも妥当なデフォルトです。YAML のシーケンスは同じ XML 要素が繰り返される形になりますが、これは XML のツリーモデルにおいて自然な対応が「同じ深さで同じタグ名の要素が繰り返されること」以外にないためです。

最後に受け渡し時の注意点をいくつか挙げます。XML 出力を SOAP サービスや XML-RPC エンドポイントに渡す場合は、変換前に対応するルート要素名を必ず確認してください。SOAP エンベロープは特定のラッパー構造を要求するため、本ツールの汎用的なルート要素では適合しないことがあります。XML が特定のスキーマに準拠しなければならない場合は、JSON Schema Generator(中間の JSON 表現から)で JSON Schema を生成し、その制約を手作業で XSD にマッピングしてください。出力に埋め込みマークアップ用の CDATA セクションを含める必要がある場合は、変換後に <![CDATA[...]]> のラップを手作業で追加してください。本ツールが出力するのはプレーンテキストの内容であり、値に CDATA で包むべき XML や HTML が含まれているかどうかは検出されません。

広告

使い方

  1. YAML データを貼り付ける

    YAML の文字列やファイルを入力欄にドロップしてください。パーサーは YAML 1.2 を読み込み、anchor、alias、merge key を解決します。解決済みのデータ構造は、要素名を指定できる形で XML に変換されます。

  2. XML 出力を設定する

    ルート要素名(デフォルトは `<root>`)、インデント(2 スペースまたは 4 スペース)を設定し、`@` キーによる属性変換の切り替えを行います。`@` で始まる YAML キーは、親要素の XML 属性になります。

  3. XML をコピーまたはダウンロードする

    整形済みの XML をクリップボードにコピーするか、.xml ファイルとしてダウンロードできます。出力には標準の `<?xml version="1.0" encoding="UTF-8"?>` 宣言が含まれ、XML 1.0 として有効です。

よくある質問

コンバーターはどのように XML 要素名を決定しますか?

YAML マッピングのキーはそのまま XML 要素名になります。先頭が数字、空白を含む、XML 要素名として使えない文字を含むキーは、アンダースコアのプレフィックスを付与して正規化されます。`@key` の規約により、YAML のキー `@type` は親要素の XML 属性 `type="..."` として扱われます。

YAML のシーケンス(配列)は XML 出力でどうなりますか?

YAML のシーケンス(`-` で始まる項目)は、繰り返される XML の兄弟要素になります。YAML の `ports: [80, 443]` は `<ports>80</ports><ports>443</ports>` に変換されます。ラップする要素にはそのシーケンスのキー名が使われ、各項目は同じタグ名の子要素になります。

YAML の anchor と alias は XML の参照として保持されますか?

いいえ。anchor と alias は YAML の解析時に解決され、XML 出力の中でインライン展開されます。XML に含まれるのは完全に展開されたデータです。YAML の anchor/alias 機構に直接対応する XML の機能は存在しません。XInclude や実体参照が XML における対応する仕組みですが、これらツールでは生成されません。

コンバーターは YAML の真偽値や null をどのように扱いますか?

YAML の `true` と `false`(および別名である `yes`/`no`/`on`/`off`)は XML のテキスト内容の `true` と `false` になります。YAML の `null`(および `~`、空の値)は、null 処理設定に応じて、自己閉鎖の空要素 `<key/>` か、`<!-- null -->` というコメントのどちらかになります。

制限事項

  • XML Schema や DTD は生成されませんこのコンバーターが出力するのは XML データであり、XML の検証ルールではありません。スキーマが必要な場合は、JSON Schema Generator(YAML から JSON へ、JSON から Schema へ)を通してから、等価な XSD の制約を手作業で記述してください。
  • スカラーの YAML は単一要素の XML ドキュメントになりますスカラー値(単一の文字列、数値、真偽値)のみの YAML ファイルは、そのスカラーを含むルート要素を持つ XML ドキュメントになります。本コンバーターは構造化されたマッピングやシーケンスのデータを想定しています。
  • 埋め込みコンテンツに対する CDATA のラップは行いませんHTML や XML コンテンツを含む YAML の値は通常のテキストとして出力され、CDATA セクションでラップされません。出力された XML を CDATA でラップされたフラグメントを必須とするパーサーが消費する場合は、ラップを手作業で追加してください。

プラットフォーム別の注意点

macOS
CLI で作業する場合は `yq -p yaml -o xml input.yaml` で変換できます。yq がインストールされていない環境で単発の YAML から XML への変換を行う場合には、ブラウザ版ツールが適しています。
Web
YAML の解析と XML の生成はすべてクライアントサイドで実行されます。データがアップロードされることはありません。ページ読み込み後はオフラインでも動作するため、機密性の高い設定を扱う場面でも安心です。
広告

関連ツール

広告