繰り返しXML要素から配列を検出する

同じタグ名を持つ繰り返し兄弟要素が自動的に検出され、マージされたアイテムスキーマを持つJSON Schema配列型に変換される仕組みを学びます。

Arrays

詳細な説明

繰り返し要素が配列になる

XMLからJSONへの変換における主要な課題の1つが配列の検出です。JSONと異なり、XMLには明示的な配列型がありません — 配列は同じタグ名を共有する複数の兄弟要素によって暗黙的に表現されます。

XMLの例

<classroom>
  <student>
    <name>Alice</name>
    <grade>92</grade>
  </student>
  <student>
    <name>Bob</name>
    <grade>85</grade>
  </student>
  <student>
    <name>Charlie</name>
    <grade>78</grade>
  </student>
</classroom>

生成されるスキーマ

{
  "type": "object",
  "properties": {
    "classroom": {
      "type": "object",
      "properties": {
        "student": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "name": { "type": "string" },
              "grade": { "type": "integer" }
            }
          }
        }
      }
    }
  }
}

配列検出の仕組み

変換ツールは、親要素の直接の子として各タグ名が何回出現するかをカウントします。タグが2回以上出現すると、配列として扱われます。すべてのオカレンスのスキーマがマージされ、統一されたアイテムスキーマが生成されます。

スキーマのマージ

配列アイテムがオカレンス間で異なる構造を持つ場合、変換ツールはそれらをマージします:

<logs>
  <entry level="info"><message>Started</message></entry>
  <entry level="error"><message>Failed</message><code>500</code></entry>
</logs>

マージされたアイテムスキーマにはmessage(required、すべてに出現)とcode(optional、一部に出現)の両方が含まれ、required検出がどのプロパティが普遍的に出現するかを反映します。

配列検出しきい値

配列検出しきい値は、配列推論をトリガーする最小出現比率を制御します。デフォルトのしきい値では、2回以上出現するタグは配列として扱われます。これはほとんどのXMLドキュメントに対して正しい動作です。

ユースケース

APIからのリストレスポンス、ログファイル、XML形式のCSVライクなデータ、繰り返しレコード要素を含むドキュメントなど、コレクションを含むXMLデータを扱う場合。配列検出を理解することは正確なスキーマ生成に不可欠です。

試してみる — XML to JSON Schema

フルツールを開く