このトピックでは、Extensible Markup Language (XML) 文字列に対応する EGL レコードについて説明します。 その他のトピックでは、サード・パーティー REST サービスにアクセスする場合などに 必要とされる、XML データと変数の間の変換のために Rich UI 開発者が使用する serviceLib.convertFromXML 関数および serviceLib.convertToXML 関数について 説明します。
XML 文字列の処理で使用される レコード (または、レコードの配列) の基礎となる EGL レコード・パーツを定義できます。 このレコード・パーツには、XML 文字列を検査するための言語である、 XML スキーマ内の記述の詳細が含まれます。
関数 XMLLib.convertToXML を使用すると、 EGL レコードの内容が XML 文字列に書き込まれます。関数 XMLLib.convertFromXML を使用すると、 XML 文字列が EGL レコードに書き込まれます。 文字列が、レコード内で指定されている妥当性検査規則を満たさない場合は、 EGL ランタイムにより RuntimeException が発行されます。
<Employee>
<EmpNo>10</EmpNo>
<Name>Smith</Name>
</Employee>
Record Employee {XMLStructure = xmlStructureKind.sequence}
EmpNo INT;
Name STRING;
end
ほとんどの場合、 レコード・パーツには、XML 文字列の要素と属性の名前に (文字および大/小文字の区別に関して) 一致する、フィールド名のセットが含まれます。 名前が一致しない場合は、 EGL のプロパティーを使用して XML の要素名または属性名を指定します。
XML 文字列の割り当てに使用する場合と、検査に使用する場合の、 この 2 つの使用法に留意してください。
<Sample color="green"></Sample>
Record root
Sample Sample? {@XMLElement {nillable = true}};
end
Record Sample {@XMlStructure = xmlStructureKind.simpleContent}
color STRING {@XMLAttribute{}};
value STRING;
end
<root><Sample color="green"></Sample></root>
<root><Sample xsi:nil="true></Sample></root>
<Employee>
<EmpNo department="Sales">10</EmpNo>
<Name>Smith</Name>
</Employee>
Record Employee{XMLStructure = xmlStructureKind.sequence}
EmpNo EmpNumber;
LastName STRING;
end
Record EmpNumber {XMLStructure = xmlStructureKind.simpleContent}
department STRING {@XMLAttribute{}};
value INT;
end
ANY 型のフィールドはサポートされていません。
レコード・パーツは、 ネストの任意のレベルにある他のレコード・パーツから参照できます。
Record Employee
EmpNo INT;
Name STRING?;
end
レコードを XML 文字列に書き込むときの EGL ランタイムによる NULL の取り扱いに関するさまざまな方法について詳しくは、 プロパティー @XMLElement (または、 @XMLRootElement)、およびプロパティー・フィールド nillable を参照してください。
これらのプロパティーについての詳細は、『@RootElement』および『XMLStructure』で説明しています。
レコード・パーツに基づいたレコードを宣言するときに、 これらのプロパティーをオーバーライドすることはできません。
これらのプロパティーについての詳細は、『@XMLElement』および『@XMLAttribute』で説明しています。
Rich UI では、 名前空間を含む XML 文字列の読み込みと書き込みをサポートしています。プロパティー @RootElement、@XMLElement、 および @XMLAttribute で名前空間を参照できます。
XML にデフォルトの名前空間が含まれている場合は、その名前空間の各 XML 要素のレコード・フィールドを定義するときに、その名前空間を参照する必要があります。XML 属性がデフォルトの名前空間に含まれることは ありません。属性は、名前空間接頭部を含むか、名前空間に含まれないかのいずれかです。
EGL で入手できる、これらに代わる情報を完全に理解するには、 XML に関係するプロパティーに関するトピックを確認してください。さらに、EGL ランタイムは XMLProcessingException を発行する場合があることに注意してください。これについては『XML の例外レコード』で説明しています。