メインコンテンツまでスキップ
バージョン: 開発中

DOM Create XML element

DOM Create XML element ( elementRef ; xPath {; attrName ; attrValue} {; attrName2 ; attrValue2 ; ... ; attrNameN ; attrValueN} ) -> 戻り値

引数説明
elementRef文字🡒ルートXML要素参照
xPathテキスト🡒作成するXML要素のXPathパス
attrName文字🡒設定する属性
attrValue文字, ブール, 倍長整数, 実数, 時間, 日付🡒新しい属性値
戻り値文字🡐作成されたXML要素の参照

説明

DOM Create XML element コマンドは、elementRef で参照されるXML中のxPath 引数で指定された位置に新しい要素を作成し、また必要であれば属性を追加します。

elementRef にはルートの要素参照 (例えばDOM Create XML Ref コマンドで作成された) を渡します。

xPath 引数には、XPath 記法を使用して表現された、作成するパスを渡します(詳細な情報については、*XPath記法のサポート (DOM)*の章を参照してください)。以下のパス式がサポートされます:

アクション
/rootノードを指定します(絶対パス)
para[1]コンテキストノードの最初のパラ子を指定します
para[last()]コンテキストノードの最後のパラ子を指定します

互換性に関する注意: v18 R3 以降、 4D のXPath 実装はより幅広い式に対応しサポートするために変更されました。互換性上の理由から、以前の標準でない実装は返還されたデータベースではデフォルトでは維持されます。変換されたデータベースにおいて拡張された機能を利用するためには、 互換性ページの互換性オプションの標準XPath を使用するオプションを選択してください。

xPath 引数に直接単純な項目名を渡すことができます。この場合、カレントの項目のサブ項目が作成されます (例題3参照)。

存在しないパス要素があれば、それは作成されます。パス要素が既に存在する場合、新しいノードが追加されます。

注: elementRef 引数を使用して一つまたはそれ以上のツリーの名前空間を定義していた場合(DOM Create XML Ref コマンド参照)、使用したい名前空間のあとにxPath 引数を指定する必要があります(例: “MyNameSpace:MyElement”)。

任意のattrName および attrValue 引数には、属性/属性値のペアを渡すことができます(変数、フィールドまたはリテラル値形式が可能です)。渡すペアの数に制限はありません。

attrValue 引数はテキストあるいは他の型 (ブール、整数、実数、日付または時間) です。テキスト以外の型を渡した場合、4Dは以下の原則に基づきテキストへの変換を行います:

変換された値の例
ブール"true" または "false"
整数"123456"
実数"12.34" (小数点は常に ".")
日付"2006-12-04T00:00:00Z" (RFC 3339 標準)
時間"5233" (秒数)

コマンドは作成された要素のXML参照を返します。

例題 1

以下の要素を作成したいとします:

 

<RootElement> <Elem1> <Elem2> <Elem3> </Elem3> <Elem3> </Elem3> </Elem2> </Elem1> </RootElement>

これを行うには以下のコードを実行します:

 var vRootRef;vElemRef : Text
 vRootRef:=DOM Create XML Ref("RootElement")
 vxPath:="/RootElement/Elem1/Elem2/Elem3[2]"
 vElemRef:=DOM Create XML element(vRootRef;vxPath)

例題 2

以下の要素を作成したいとします (属性付き):

                                      

これを行うには以下のコードを実行します:

 var vRootRef;vElemRef : Text
 var $aAttrName1;$aAttrName2;$aAttrVal1;$aAttrVal2;$aAttrVal3 : Text

$aAttrName1:="Font"
 $aAttrName2:="Size"
 $aAttrVal1:="Verdana"
 $aAttrVal2:="10"
 $aAttrVal3:="8"
 
 vRootRef:=DOM Create XML Ref("RootElement")
 vxPath:="/RootElement/Elem1/Elem2/Elem3"
 vElemRef:=DOM Create XML element(vRootRef;vxPath;$aAttrName1;$aAttrVal1;$aAttrName2;$aAttrVal2)
 vElemRef:=DOM Create XML element(vRootRef;vxPath;$aAttrName1;$aAttrVal1;$aAttrName2;$aAttrVal3)


後から要素を挿入したい場合、以下のように書くことができます:

 vxPath:="/RootElement/Elem1/Elem2/Elem3[2]"
 vElemRef:=DOM Create XML element(vRootRef;vxPath;"Font";"Arial")

その結果、以下のような構造になります:

                                                

例題 3

以下の構造を作成して書き出したいとします:

<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<Root>
   <Elem1>Hello</Elem1>
</Root>

項目名を使用したシンプルなシンタックスを使用する場合、以下のように書きます:

 var $root : Text
 var $ref1 : Text
 
 $root:=DOM Create XML Ref("Root")
 $ref1:=DOM Create XML element($root;"Elem1")
 DOM SET XML ELEMENT VALUE($ref1;"Hello")
 DOM EXPORT TO FILE($root;"mydoc.xml")
 DOM CLOSE XML($root)

システム変数およびセット

コマンドが正しく実行されるとシステム変数OKに1が設定され、そうでなければ0が設定されエラーが生成されます。

エラー管理

エラーは以下の場合に生成されます:

  • ルート要素参照が無効の場合。
  • 作成する要素の名前が無効の場合 (例えば名前が数字で始まる場合)。

参照

DOM Create XML element arrays
DOM Get XML element
DOM REMOVE XML ELEMENT