XML宣言と処理命令

XML宣言(<?xml ...?>)とJSONからXMLへの変換における役割を理解します。バージョン、エンコーディング、standalone属性、宣言を含めるタイミングを解説します。

XML Features

詳細な説明

XML宣言はXMLドキュメントの先頭にある <?xml ...?> 行です。XMLのバージョン、文字エンコーディング、ドキュメントがスタンドアロンかどうかを指定します。JSONには等価な概念がありません。

完全なXML宣言:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<config>
  <name>MyApp</name>
  <version>2.0</version>
</config>

宣言のコンポーネント:

属性 必須 目的
version はい "1.0" または "1.1" XML仕様バージョン
encoding いいえ "UTF-8""UTF-16" など ドキュメントの文字エンコーディング
standalone いいえ "yes" または "no" 外部DTDが必要かどうか

JSONからXMLに変換する場合:

ほとんどのコンバーターは自動的に宣言を追加します。

XMLからJSONに変換する場合:

XML宣言はドキュメント形式に関するメタデータであり、データコンテンツではありません。ほとんどのXMLからJSONへのコンバーターは宣言を破棄します。JSONは常にUTF-8(RFC 8259)であり、バージョンやstandaloneの概念がないためです。

宣言を含めるべきか:

  • はい -- XMLがファイルに保存されるかネットワーク経由で送信される場合、特にエンコーディングがUTF-8でない場合。
  • はい -- 消費側システムがXMLを厳密にバリデートし、宣言を要求する場合。
  • いいえ -- より大きなドキュメントに埋め込まれるXMLフラグメントを生成する場合。
  • いいえ -- 宣言がデフォルト(version="1.0" encoding="UTF-8")で、消費側が寛容な場合。

処理命令(PI)はXMLプロセッサに指示を渡す類似の構造です。PIもJSON変換時に破棄されます。ラウンドトリップの忠実度が必要な場合、PIは "?xml-stylesheet" のような特殊キーに格納できます。

ユースケース

JSONテンプレートからXML設定ファイルを生成する際に、消費側のJavaアプリケーションが正しい解析のためにエンコーディング仕様を含む適切なXML宣言を必要とする場合。

試してみる — JSON ↔ XML Converter

フルツールを開く