建设工程查询扣分网站网页设计与制作基础
文章目录
- 第三章 将对象映射到 XML - 使用列表或数组定义的属性
- 使用列表或数组定义的属性
- `%ListOfDataTypes` 或 `%ArrayOfDataTypes` 类型的属性
- `%ListOfObjects` 或 `%ArrayOfObjects` 类型的属性
第三章 将对象映射到 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 类参数,如上一节所示。
