注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。

XML をスキーマに従ってパース

サポート対象:バッチ、ストリーミング

指定されたスキーマ定義に従って XML 文字列をパースし、スキーマに含まれないフィールドは無視します。

式のカテゴリー: ファイル、構造体

宣言された引数

  • 入力スキーマ: XML 文字列のパースに使用するスキーマ定義。
    データ型<構造体>
  • Xml: パースする XML 文字列。
    式<文字列>
  • 任意 属性の接頭辞: タグの属性に付ける接頭辞。
    リテラル<文字列>
  • 任意 名前空間を無視: 設定すると、要素と属性の名前空間を無視します。たとえば、<ns1 ns2="value" /> は として扱われます。デフォルトは false です。
    リテラル<ブール値>
  • 任意 出力モード: 「simple」出力モードは、パース中にエラーが発生した場合(無効な入力に起因するエラーを含む)、null を返します。「with errors」出力モードは、パース中に見つかったエラーを「errors」フィールドに、有効なパース済み XML を「ok」フィールドに格納した、パース可能な構造体を返します。
    列挙型<Simple, With errors>
  • 任意 値タグ: 子要素を持たない要素に属性がある場合に、値に使用するタグ。
    リテラル<文字列>

出力タイプ: 構造体

例

例1:基本ケース

引数の値:

  • 入力スキーマ: Struct<id, airport<id, miles>>
  • Xml: xml
  • 属性の接頭辞: null
  • 名前空間を無視: null
  • 出力モード: SIMPLE
  • 値タグ: null
xml出力
<airline>
 <id>XB-112</id>
 <airport>
  <id>JFK</id>
  <miles>2000</miles>
 </airport>
</airline>
{
 airport: {
 id: JFK,
 miles: 2000,
},
 id: XB-112,
}

例2:基本ケース

説明: 名前空間を無視する場合、パース時にデータ内の名前空間が無視されます。名前空間は除去されるため、スキーマ内の名前空間付きの名前がキーと一致することはありません。

引数の値:

  • 入力スキーマ: Struct<name, _attribute, email, address<nevermatches:street, city, state, zip>>
  • Xml: xml
  • 属性の接頭辞: _
  • 名前空間を無視: true
  • 出力モード: SIMPLE
  • 値タグ: null
xml出力
<ns1 ns1="tall">
<ns1>John Doe</ns1>
<email>john.doe@exampl...
{
 _attribute: tall,
 address: {
 city: Exampleville,
 *...

例3:null のケース

説明: 要求されたフィールドが入力 XML にない場合、そのフィールドは null になります。

引数の値:

  • 入力スキーマ: Struct<id, airport<id, miles>>
  • Xml: xml
  • 属性の接頭辞: null
  • 名前空間を無視: null
  • 出力モード: SIMPLE
  • 値タグ: null
xml出力
<airline>
 <id>XB-112</id>
 <airport>
  <id>JFK</id>
 </airport>
</airline>
{
 airport: {
 id: JFK,
 miles: null,
},
 id: XB-112,
}

例4:null のケース

説明: 要求されたスキーマが小さすぎる場合、スキーマ内のフィールドのみがパースされます。

引数の値:

  • 入力スキーマ: Struct<id>
  • Xml: xml
  • 属性の接頭辞: _
  • 名前空間を無視: null
  • 出力モード: SIMPLE
  • 値タグ: null
xml出力
<airline>
 <id>XB-112</id>
 <airport>
  <id>JFK</id>
 </airport>
</airline>
{
 id: XB-112,
}

例5:null のケース

説明: 名前の前に属性の接頭辞を付けることで、属性を読み取れます。

引数の値:

  • 入力スキーマ: Struct<id, airport<_id, miles>>
  • Xml: xml
  • 属性の接頭辞: _
  • 名前空間を無視: null
  • 出力モード: SIMPLE
  • 値タグ: null
xml出力
<airline> <id>XB-112</id> <airport id="JFK">
  <miles>2000</miles>
 </airport>
</airline>
{
 airport: {
 _id: JFK,
 miles: 2000,
},
 id: XB-112,
}