文章目录
第三章 将对象映射到 XML - 使用列表或数组定义的属性
使用列表或数组定义的属性
对于使用语法 Property PropName As List of classname
或 Property PropName As Array of classname
定义的每个属性,请执行以下操作:
- 如果
classname
是对象类,则对该类启用XML
。即,%XML.Adaptor
添加到类名的超类列表中。 - 如果
classname
是数据类型类,则无需执行任何操作。 - 如果
classname
是流类,并且属性是列表,则不需要任何工作。流被映射为 XML 作为字符串。
注意:IRIS
不支持将流数组映射到 XML
。如果对象具有定义为流数组的属性,请为该属性包含 XMLPROJECTION="none"
。
Class MyApp.MyXMLObject Extends (%RegisteredObject, %XML.Adaptor)
{
Property MyListOfObjects As list Of MyApp.OtherXMLObject;
Property MyArrayOfObjects As array Of MyApp.OtherXMLObject;
Property MyListOfDT As list Of %String;
Property MyArrayOfDT As array Of %String;
Property MyListOfStreams As list Of %GlobalCharacterStream;
Property MyArrayOfStreams As array Of %GlobalCharacterStream(XMLPROJECTION = "NONE");
}
%ListOfDataTypes
或 %ArrayOfDataTypes
类型的属性
XML
工具自动将%ListOfDataTypes
类型的属性或 %ArrayOfDataTypes
类型的属性映射为容器。默认情况下,容器包含字符串元素。
如果需要正确的 XML
架构,并且假设元素是字符串不合适,则创建并使用集合类的子类。在子类中,指定 ELEMENTTYPE
类参数。例如:
Class MyApp.MyIntegerCollection Extends %ListOfDataTypes
{
Parameter ELEMENTTYPE="%Library.Integer";
}
对于 ELEMENTTYPE
,指定集合中使用的类的完整包和类名。
%ListOfObjects
或 %ArrayOfObjects
类型的属性
XML
工具自动将 %ListOfObjects
类型的属性映射为属性,或将 %ArrayOfObjects
类型的属性映射为容器。然而,有必要使集合中使用的类支持 XML。
对于类型为 %ArrayOfObjects
的属性,集合中使用的类不能是流类。
如果需要完整的 XML
架构,则必须指定集合的元素类型。为此,请创建并使用集合类的子类。在子类中,指定 ELEMENTTYPE
类参数,如上一节所示。