当在顶层映射 IRIS
对象(而不是作为另一个对象的属性)时,其内部 ID
、OID
和全局唯一 ID
不能用作对象属性,因此不会映射这些 ID
。但是,在某些情况下,可能希望使用对象 ID
作为唯一标识符。然后,例如,可以在更新存储的对象之前将传入(已更改)的对象与相应的存储对象进行匹配。
IRIS XML
支持提供了多个帮助程序类,可用于将 IRIS
对象标识符投影到 XML
文档: %XML.Id
中(对于内部 ID)、%XML.Oid
(对于 ``)和 %XML.GUID
(用于全局唯一 ID
)。
要使用这些类,请向支持 XML
的类添加一个特殊属性,该属性的用途是包含要导出的 ID
。该属性的类型必须为 %XML.Id
、%XML.Oid
或 %XML.GUID
。确保该属性已映射,并将其标记为瞬态,以便它不包含在该类的 SQL
映射中。
当导出到 XML
时,将支持 XML
的类的对象带入内存。当对象位于内存中时,添加的特殊属性将从 IRIS
内部存储中检索请求的 ID
并包含该值(以便您可以导出它)。
例如,考虑以下类:
Class MyApp4.Obj.Person4 Extends (%Persistent,%Populate,%XML.Adaptor)
{
Property IdForExport As %XML.Id
(XMLNAME="IRISID", XMLPROJECTION="ELEMENT") [Private, Transient];
Property Name As %Name;
Property DOB As %Date(FORMAT = 5, MAXVAL = "+$h");
}
在此类中,特殊属性是 IdForExport
。该属性专门用 IRISID
的 XML
元素名称进行映射。
该类的示例输出如下:
<?xml version="1.0" encoding="UTF-8"?>
<Root>
<Person>
<IRISID>1</IRISID>
<Name>Marks,Jules F.</Name>
<DOB>1989-04-02</DOB>
</Person>
<Person>
<IRISID>2</IRISID>
<Name>Palmer,Angelo O.</Name>
<DOB>1937-11-15</DOB>
</Person>
...
当为对象生成 XML
输出时,系统会根据需要生成命名空间前缀,但可以根据需要指定前缀。为此,请在支持 XML 的对象的类定义中设置以下参数:
XMLPREFIX
指定与此类的命名空间关联的前缀。