以下の例の中では次の定義が使用されています。
D info DS
D num 5P 2
D xmlDoc S 1000A VARYING
D qualDs DS QUALIFIED
D subf 10A
- XML 名 myinfo が RPG 名 info と
異なっているため、XML 要素の名前を指定するために path オプションが使用されます。
/free
xmlDoc = '<myinfo><num>123.45</num></myinfo>';
xml-into info %XML(xmlDoc : 'path=myinfo');
// num = 123.45
- path オプションは指定されませんが、RPG 名 info と
XML 名 myinfo は異なっています。XML 文書
に info 要素は含まれていないため、XML-INTO 命令は状況コード 00353 で
失敗します。
xmlDoc = '<myinfo><num>456.1</num></myinfo>';
xml-into(e) info %XML(xmlDoc');
// %error = '1'
// %status = 353
- 必要な XML 要素は XML 文書中の最外部の要素ではないため、
必要な XML 要素を位置指定するために path オプションが使用されます。
xmlDoc = '<data><info><num>-789</num></info></data>';
xml-into info %XML(xmlDoc : 'path=data/info');
// num = -789
- XML-INTO 命令のターゲットは、データ構造ではなくサブフィールド
です。path オプションは、num RPG サブフィールドに
一致する num XML 要素へのパスを指定しています。
xmlDoc = '<data><info><num>.3</num></info></data>';
xml-into num %XML(xmlDoc :
'path=data/info/num');
// num = .3
- XML 文書はファイルに入っています。したがって、doc オプション
と path オプションの両方の指定が必要です。
//
// myfile.xml:
// <data>
// <val>17</val>
// </data>
xml-into num %XML('myfile.xml' : 'doc=file path=data/val');
// num = 17
- 修飾されたサブフィールドが XML-INTO 命令の
ターゲットとして指定されます。サブフィールド名 subf は XML 名 subf と
一致しているため、path オプションは不要です。
xmlDoc = '<subf>-987.65</subf>';
xml-into qualDs.subf %XML(xmlDoc);
// qualDs.subf = '-987.65'
- XML 文書には、要素のレベルが qualds と subf の 2 つあります。
この XML 文書は RPG qualds データ構造に一致していますが、RPG プログラム
は XML 命令のターゲットとして qualds.subf と指定しています。
デフォルトのパスはサブフィールドの名前なので、path オプション
を path=qualds/subf と指定する必要があります。これには、
変数を設定するためのデータが入っている XML 要素も含めて、必要な XML 要素へのパスにあるすべての XML 要素の名前が含まれていなければ
なりません。
xmlDoc = '<qualds><subf>-987.65</subf></qualds>';
xml-into qualDs.subf %XML(xmlDoc :
'path=qualds/subf);
// qualDs.subf = '-987.65'