空文字列および NULL 値の処理
このトピックでは、空文字列と NULL 値の処理方法について説明します。
このトピックの XML 例はリテラル形式になります。
このページで説明されているクラスとプロパティのパラメータ |
---|
|
空文字列および NULL 値の既定のプロジェクション
以下のテーブルは、空文字列および NULL 値の既定の XML プロジェクションをまとめたものです。XML プロジェクションは、SQL プロジェクションと似ています。ここでは、比較のために、SQL プロジェクションも示しています。
InterSystems IRIS 値 | XML への既定のプロジェクション | SQL へのプロジェクション |
---|---|---|
$char(0) | 空の要素または属性 | SQL 空文字列 |
"" | プロジェクションなし | SQL NULL 値 |
次のセクションでは、エクスポート時およびインポート時にこれらのプロジェクションがどのように機能するかを説明し、これらのプロジェクションを制御するためのオプションについて詳細に解説します。
値のエクスポート
以下のテーブルに、要素として XML に投影されるプロパティについて、XML 対応オブジェクトに含まれる空文字列と NULL 値を XML ドキュメントにエクスポートする方法を示します。
XML 対応クラスの詳細 | "" になるプロパティ | $char(0) になるプロパティ |
---|---|---|
XMLIGNORENULL および XMLNIL の既定値を指定するクラス | エクスポートされた XML ドキュメントには、このプロパティに対応する要素が含まれない | エクスポートされたドキュメントには、このプロパティに対応する空要素が含まれる ("サブセクション" を参照) |
XMLIGNORENULL=1 を指定するクラス | エクスポートされたドキュメントには、このプロパティに対応する空要素が含まれる ("サブセクション" を参照) | |
XMLNIL=1 (および XMLIGNORENULL が 1 以外) を指定するクラス | エクスポートされたドキュメントには、このプロパティと、この要素 (xsi:nil="true" を指定) に対応する空要素が含まれる |
詳細は、属性として XML に投影されるプロパティの場合も同様です。
XML 対応クラスの詳細 | "" になるプロパティ | $char(0) になるプロパティ |
---|---|---|
このテーブルで説明するパラメータの既定値を指定するクラス | エクスポートされた XML ドキュメントには、このプロパティに対応する属性が含まれない | エクスポートされたドキュメントには、このプロパティに対応する空の属性が含まれる |
XMLIGNORENULL=1 | エクスポートされたドキュメントには、このプロパティに対応する空の属性が含まれる。例:PropName="" | |
XMLNIL=1 (および XMLIGNORENULL が 1 以外) | エクスポートされた XML ドキュメントには、このプロパティに対応する属性が含まれない (既定のシナリオと同じ) |
空要素の形式の制御
既定では、InterSystems IRIS® データ・プラットフォームは、開始タグと終了タグで空要素を記述します。例えば、以下のようになります。
<PropName></PropName>
InterSystems IRIS で自己終了型の空要素 (上記と同等) を書き込むようにすることもできます。例えば、以下のようになります。
<PropName />
このようにするには、XMLUSEEMPTYELEMENT クラス・パラメータに 1 を指定します。このパラメータの既定値は 0 です。
XMLIGNORENULL、XMLNIL、および XMLUSEEMPTYELEMENT の詳細
XML へのエクスポート時 (および SOAP メッセージの書き込み時) に使用します。このパラメータは、NULL 文字列を無視する (エクスポートしない) かどうかを制御します。
このパラメータは、すべての XML 対応クラスのパラメータです。XMLIGNORENULL に指定できる値は、0 (既定値)、1、"INPUTONLY"、または "RUNTIME" (大文字/小文字の区別なし) です。
XMLIGNORENULL クラス・パラメータは、サブクラスによって継承されます。
XML へのエクスポート時 (および SOAP メッセージの書き込み時) に使用します。このパラメータは、NULL 文字列に対する xsi:nil 属性の使用を制御します。
このパラメータは、すべての XML 対応クラスのクラス・パラメータおよびプロパティ・パラメータです。プロパティ・パラメータが優先されます。XMLNIL は、0 (既定値) または 1 です。
XMLNIL クラス・パラメータは、サブクラスに継承されません。XMLNIL プロパティ・パラメータは、継承されます。
XML へのエクスポート時 (および SOAP メッセージの書き込み時) に使用します。このパラメータは、InterSystems IRIS で自己終了型の空のタグを書き込むかどうかを制御します。このパラメータは、以下の 2 つのシナリオで適用されます。
-
クラスに対する XMLUSEEMPTYELEMENT が 1 の場合、このパラメータは、"" になる文字列値のプロパティに作用し、そのプロパティは要素として投影されます。これに該当するすべてのプロパティは、自己終了型の空要素としてエクスポートされます。
-
クラスに対する XMLUSEEMPTYELEMENT が 1 の場合、プロパティが XML エクスポートに要素として出現しないときには、このパラメータは、クラスのインスタンスに対応する空要素の形式に作用します。この要素は、自己終了型の空要素としてエクスポートされます。
クラスの XMLUSEEMPTYELEMENT が 1 の場合、システムは、そのクラスに対して、わずかに多くのコードを生成します。また、そのクラスの XML 処理の効率も、わずかに低くなります。
値のインポート
XML から XML 対応オブジェクトへのインポート時に、空、NULL、または欠落している要素と属性を InterSystems IRIS が処理する方法を以下のテーブルに示します。
XML 対応クラスの詳細 | インポートしたドキュメントに要素または属性が含まれない | インポートしたドキュメントでは、要素または属性が空になる | インポートしたドキュメントでは、要素は空になり、xsi:nil="true" を指定する |
---|---|---|---|
既定値に XMLNILNOOBJECT パラメータを指定するクラス | プロパティは設定されない | プロパティを $char(0) に設定する |
|
XMLNILNOOBJECT=1 を指定するクラス | プロパティは設定されない |