期待される XML データの形式

XML 要素の構造は、RPG 変数の構造と一致することが必要です。
  • RPG 変数に一致する XML 要素のネスティング・レベルは、XML 文書の任意のレベルに設定可能ですが、その XML 要素が文書の想定されたネスティング・レベルにない場合は path オプションを指定する必要があります。 path オプションが指定されない場合は、以下の前提条件が適用されます。
    • 非配列の変数 (テーブル名および複数回繰り返しデータ構造など) の 場合、文書の要素 (最外部の XML 要素) は RPG 変数に一致する XML 要素であることが前提です。 最外部の XML 要素の名前が RPG 変数の名前と同じではない場合は、path オプションを指定して、使用される XML 要素を指定する必要があります。
    • 配列変数の場合、文書の要素 (最外部の XML 要素) の直接の子は RPG 変数に一致する XML 要素であることが前提です。
  • RPG サブフィールドに一致する XML 要素は以下の場合があります。
    • RPG サブフィールドの親データ構造に一致する XML 要素の XML 属性 (それ自体はデータ構造ではないサブフィールドの場合のみ)
    • サブフィールドが含まれているデータ構造に一致する XML 要素の直接の子 XML 要素
  • RPG 配列に一致する XML 要素は、同じ親 XML の子である必要があります。 それらの子要素が XML 文書に一緒に存在する必要はなく、別の要素を挿入することも可能です。
注: XML 処理命令は、XML-INTO では無視されます。 処理命令の形式は以下のとおりです。
<?targetname data value ?>
スカラー変数
D libname      S             10A
 /free
      XML-INTO libname %XML(xmldoc : option)
XML-INTO libname の XML の例 path オプション
<libname>data</libname>  
<library>data</library> 'path=library'
<info><library>data</library></info> 'path=info/library'
配列要素
D sites        S             25A   DIM(3)
 /free
      XML-INTO sites(n) %XML(xmldoc : option)
XML-INTO sites の XML の例 path オプション
<sites>data</sites> ブランク
<custsites>data</custsites> 'path=custsites'
<info><sites>data</sites></info> 'path=info/sites'
テーブル名
D tabname      S             10A   DIM(5)
 /free
      XML-INTO tabname %XML(xmldoc : opts)
XML-INTO tabname の XML の例 path オプション
<tabname>data</tabname> ブランク
<library>data</library> 'path=library'
<info><library>data</library></info> 'path=info/library'
単純なデータ構造または複数回繰り返しデータ構造
注: 例における XML データでは、判読しやすいように改行およびインデントが使用されています。 XML データは、任意の便利な方式で形式化できます。
D pgm          DS
D   name                  10A
D   lib                   10A

OR

D pgm          DS                  OCCURS(5)
D   name                  10A
D   lib                   10A
 /free
      XML-INTO pgm %XML(xmldoc : option)
XML-INTO pgm の XML の例 path オプション
  <pgm>
    <name>data</name>
    <lib>data</lib>
  </pgm>
ブランク
  <program>
    <name>data</name>
    <lib>data</lib>
  </program>
'path=program'
  <api>
    <program>
      <name>data</name>
      <lib>data</lib>
    </program>
  </api>
'path=api/program'

注: サブフィールド情報は、XML 要素または XML 属性により提供されます。 データ構造のサブフィールドに XML を指定するその他の有効な方法を以下に示します。 スカラー・サブフィールドの XML データを作成する場合には、属性または要素のいずれかを自由に使用して XML 文書を設計できます。

 <pgm name="data" lib="data"/>
OR
 <pgm name="data">
   <lib>data</lib>
 </pgm>
スカラー型の配列
D sites        S             25A   DIM(3)
 /free
      XML-INTO sites %XML(xmldoc : option)
 
XML-INTO sites の XML の例 path オプション
 <anything>
   <sites>data</sites>
   <sites>data</sites>
   <sites>data</sites>
 </anything>
ブランク
 <info>
   <custsites>data</custsites>
   <custsites>data</custsites>
   <custsites>data</custsites>
 </info>
'path=info/custsites'
データ構造の配列
D pgm          DS                  DIM(3) QUALIFIED
D   name                  10A
D   lib                   10A
 /free
      XML-INTO pgm %XML(xmldoc : option)
XML-INTO pgm の XML の例 path オプション
  <anything>
    <pgm name="name1" lib="lib1"/>
    <pgm><name>name2</name>
         <lib>lib2</lib></pgm>
    <pgm lib="lib3"><name>name3</pgm>
  </anything>
ブランク
  <programs>
    <pgm name="name1" lib="lib1"/>
    <pgm><name>name2</name>
         <lib>lib2</lib></pgm>
    <pgm lib="lib3"><name>name3</pgm>
  </programs>
'path=programs/pgm'

注: 3 つの "pgm" XML 要素には、 XML 要素および XML 属性のさまざまな組み合わせで指定された名前およびライブラリー情報があります。 スカラー・サブフィールドの XML データを作成する場合には、属性または要素のいずれかを自由に使用して XML 文書を設計できます。

複雑なデータ構造
D qualname     DS                QUALIFIED
D   name                  10A
D   lib                   10A
D dtaaraInfo   DS                QUALIFIED
D   dtaara                       LIKEDS(qualname)
D   type                  10I 0
D   value                100a
 /free
      XML-INTO dtaaraInfo %XML(xmldoc : option)
XML-INTO dtaaraInfo の XML の例 path オプション
  <dtaarainfo>
     <dtaara>
       <name>data</name>
       <lib>data</lib>
     </dtaara>
     <type>data</type>
     <value>data</value>
  </dtaarainfo>
ブランク
  <sys>
    <obj>
      <dta>
         <dtaara>
           <name>data</name>
           <lib>data</lib>
         </dtaara>
         <type>data</type>
         <value>data</value>
      </dta>
    </obj>
   </sys>
'path=sys/obj/dta'
データ構造の配列があるハンドラー・プロシージャー
D myCommArea   DS
D   total                 20u 0
D custType     DS                qualified
D   name                  50a    varying
D   id_no                 10i 0
D   city                  20a
D custHdlr     PR
D   commArea                     likeds(myCommArea)
D   custinfo                     likeds(custType) dim(5)
D   numElems              10u 0  const
 /free
      XML-INTO %HANDLER(custHdlr : myCommArea) %XML(xmldoc : option)

注: %HANDLER が指定された場合には path オプションが必要です。

XML-INTO %HANDLER(custHdlr:x) の XML の例 path オプション
  <info>
    <cust>
       <name>data</name>
       <id_no>data</id_no>
       <city>data</city>
    </cust>
    <cust>
       <name>data</name>
       <id_no>data</id_no>
       <city>data</city>
    </cust>
    :
    :
    <cust>
       <name>data</name>
       <id_no>data</id_no>
       <city>data</city>
    </cust>
  </info>
'path=info/cust'
スカラー型の配列があるハンドラー・プロシージャー
D myCommArea   DS
D   total                 20u 0
D nameHdlr     PR
D   commArea                     likeds(myCommArea)
D   names                 10a    dim(5)
D   numNames              10u 0  const
 /free
      XML-INTO %HANDLER(nameHdlr : myCommArea) %XML(xmldoc : option)

注: %HANDLER が指定された場合には path オプションが必要です。

XML-INTO %HANDLER(nameHdlr:x) の XML の例 path オプション
  <info>
    <name>data</name>
    <name>data</name>
    <name>data</name>
    <name>data</name>
    :
    :
    <name>data</name>
    <name>data</name>
  </info>
'path=info/names'