Read From XML

Read from XML ステージでは、XML ファイルがジョブまたはサブフローに読み込まれます。ここでは、ファイルのパスとデータ フォーマット (XML スキーマとデータ要素の詳細など) が定義されます。

単純 XML 要素はフラット フィールドに変換され、次のステージに渡されます。単純 XML データは、データのみを含み、子要素を含まない XML 要素からなるレコードで構成されます。例えば、以下は単純 XML データ ファイルです。

<customers>
    <customer>
        <name>Sam</name>
        <gender>M</gender>
        <age>43</age>
        <country>United States</country>
    </customer>
    <customer>
        <name>Jeff</name>
        <gender>M</gender>
        <age>32</age>
        <country>Canada</country>
    </customer>
    <customer>
        <name>Mary</name>
        <gender>F</gender>
        <age>61</age>
        <country>Australia</country>
    </customer>
</customers>

この例では、各レコードに <name><gender><age><country> などの単純 XML 要素が含まれています。子要素を含んでいる要素はありません。

大部分のステージではフラット形式のデータが必要とされるので、Read from XML ステージはこのような単純データを自動的にフラット化します。階層構造を保持する場合は、Read from XML ステージの後で Aggregator ステージを使用して、データを階層データに変換します。

複合 XML 要素は階層形式のままで、リスト フィールドとして渡されます多くのステージではフラット形式のデータが必要とされるので、下流のステージで使えるようにするために複合 XML 要素をフラット化しなければならないこともあります。詳細については、複合 XML 要素のフラット化を参照してください。

注: Read From XML は、XML タイプ xs:anyTypeおよび xs:anySimpleType をサポートしていません。

[ファイル プロパティ] タブ

表 1. [ファイル プロパティ] タブ

オプション名

説明

   

スキーマ ファイル

XSD スキーマ ファイルへのパスを指定します。省略記号ボタン (...) をクリックし、必要なファイルを参照して選択します。データ ファイルがスキーマに照らして検証されるようにするためには、スキーマ ファイルをサーバー上に置いておかなければなりません。スキーマ ファイルがサーバー上に存在しないと検証が無効になります。

別のやり方として、XSD ファイルの代わりに XML ファイルを指定してもかまいません。XML ファイルを指定した場合は、その XML ファイルの構造に基づいてスキーマが推定されます。XSD ファイルの代わりに XML ファイルを使用する場合は、次のような制限があります。

  • XML ファイルは 1 MB 以下でなければなりません。XML ファイルのサイズが 1 MB を越える場合は、XML の構造を維持しつつ、データの一部の削除を試みてください。
  • データ ファイルは推定されるスキーマに照らして検証されません。
注: なお、Spectrum™ Technology Platformサーバーを実行しているプラットフォームが Unix または Linux の場合、これらのプラットフォームでファイル名およびパスの大文字と小文字が区別されることに注意してください。
   

データ ファイル

XML データ ファイルへのパスを指定します。省略記号ボタン (...) をクリックし、必要なファイルを参照して選択します。

注: なお、Spectrum™ Technology Platformサーバーを実行しているプラットフォームが Unix または Linux の場合、これらのプラットフォームでファイル名およびパスの大文字と小文字が区別されることに注意してください。
   

プレビュー

スキーマまたは XML ファイルのプレビューを表示します。XSD ファイルを指定すると、選択した XSD がツリー構造に反映されます。スキーマ ファイルとデータ ファイルの両方を指定したら、太字のスキーマ要素をクリックして、その要素に含まれるデータのプレビューを見ることができます。

   

[フィールド] タブ

表 2. [フィールド] タブ

オプション名

説明

フィルタ

参照のしやすさを考慮して要素や属性の一覧をフィルタリングします。フィルタを設定しても、どのフィールドが出力されるかには影響しません。あくまでも参照のために要素や属性の一覧をフィルタリングするだけです。

XPath

XPath 列には要素または属性の XPath 式が表示されます。これは専ら情報表示のためのものです。XPath の詳細については、www.w3schools.com/xpath/ を参照してください。

フィールド

データフローで要素または属性のために使われる名前。フィールド名を変更するには、ダブルクリックして新しいフィールド名を入力します。

タイプ

フィールドで使用するデータ タイプ。

bigdecimal
小数点以下 38 桁の精度をサポートする数値データ タイプ。高い精度が必要な算術計算で使用されるデータ (特に金融データ) には、このデータ タイプを使用してください。bigdecimal データ タイプは、double データ タイプより正確な計算をサポートします。
boolean
true と false の 2 つの値を持つ論理タイプ。
date
月、日、年を含むデータ タイプ。date のフォーマットは yyyy-MM-dd でなければなりません。例えば、2012-01-30 のようになります。
datetime
月、日、年、時、分、秒を含むデータ タイプ。datetime のフォーマットは yyyy-MM-dd'T'HH:mm:ss でなければなりません。例えば、2012-01-30T06:15:30 のようになります。
double
正と負の倍精度数を含む数値データ タイプ。値の範囲は、2-1074 ~ (2-2-52)×21023。指数表記すると、値の範囲は、-1.79769313486232E+308 ~ 1.79769313486232E+308 となります。
float
正と負の単精度数を含む数値データ タイプ。値の範囲は、2-149 ~ (2-223)×2127。指数表記すると、値の範囲は、-3.402823E+38 ~ 3.402823E+38 となります。
integer
正と負の整数を含む数値データ タイプ。値の範囲は、-231 (-2,147,483,648) ~ 231-1 (2,147,483,647)。
list
厳密に言えば、リストはデータ タイプではありません。しかし、フィールドが階層データを含む場合、"リスト" フィールドとして扱われます。Spectrum™ Technology Platform では、リストは複数の値で構成されるデータのコレクションです。例えば、Names フィールドには名前の値のリストを含めることができます。これは、XML 構造では次のように表すことができます。
<Names>
    <Name>John Smith</Name>
    <Name>Ann Fowler</Name>
</Names>
XML のリスト データ タイプが複数の値で構成される単純データ タイプであるのに対し、Spectrum™ Technology Platform のリスト データ タイプは XML の複合データ タイプに似ているという点で、Spectrum™ Technology Platform のリスト データ タイプは XML スキーマのリスト データ タイプと異なることに注意してください。
long
正と負の整数を含む数値データ タイプ。値の範囲は、-263 (-9223372036854775808) ~ 263-1 (9223372036854775807)。
string
文字シーケンス。
time
時刻を含むデータ タイプ。time のフォーマットは HH:mm:ss でなければなりません。例えば、21:15:59 のようになります。

含める

このフィールドをデータフローで使えるようにするか除外するかを指定します。

例: 簡単な XML ファイル

この例では、次のファイルをデータフローに読み込みます。

<addresses>
    <address>
        <addressline1>One Global View</addressline1>
        <city>Troy</city>
        <state>NY</state>
        <postalcode>12128</postalcode>
    </address>
    <address>
        <addressline1>1825B Kramer Lane</addressline1>
        <city>Austin</city>
        <state>TX</state>
        <postalcode>78758</postalcode>
    </address>
</addresses>

この例で、<addressline1><city><state>、および<postalcode> を含めたとします。その場合は、<address>要素ごとに 1 つのレコードが生成されます。<address><addressline1><city><state>、および <postalcode> の共通の親要素だからです。