第七章 将对象映射到 XML - 指定 XML 摘要
指定 XML 摘要
当类用作属性时,可以轻松指定要映射到 XML
的类的哪些属性:
- 在类中,将
XMLSUMMARY
类参数指定为要映射到XML
的属性的逗号分隔列表,其大小写与类定义中使用的大小写完全相同。请注意,XMLSUMMARY
不能包含伪属性ID
和OID
。
除非还指定以下一个或两个参数,否则此参数无效。
- 在同一个类中,可以选择将
XMLDEFAULTREFERENCE
指定为“SUMMARY
”或“COMPLETE
”(默认值);这些值不区分大小写。选项“SUMMARY
”意味着当此类用作属性时,只有在XMLSUMMARY
中列出的属性才应在映射中使用。选项“COMPLETE
”意味着应使用具有XML
映射的所有属性。
这些值不区分大小写。
- 在使用此类作为属性的类中,可以选择将
XMLREFERENCE
属性参数指定为“SUMMARY
”或“COMPLETE
”(默认值);这些值不区分大小写。这会覆盖XMLDEFAULTREFERENCE
类参数。
只能为值为对象的属性设置此属性参数。
例如,考虑以下 Address
类:
Class xmlsummary.Address Extends (%RegisteredObject, %XML.Adaptor)
{
Parameter XMLSUMMARY = "City,ZipCode";
Parameter XMLDEFAULTREFERENCE = "SUMMARY";
Property Street As %String;
Property City As %String;
Property State As %String;
Property ZipCode As %String;
}
下面显示了此类实例的 XML
表示形式的示例:
<Address>
<Street>47 Winding Way</Street>
<City>Middlebrook</City>
<State>GA</State>
<ZipCode>50291</ZipCode>
</Address>
请注意,所有属性都包含在内。
现在考虑另一个使用 Address
类作为属性的类:
Class xmlsummary.Person Extends (%RegisteredObject, %XML.Adaptor)
{
Property Name As %String;
Property Address as Address;
}
下面显示了此类实例的 XML
表示形式的示例:
<Person>
<Name>Penelope Farnsworth</Name>
<Address>
<City>Middlebrook</City>
<ZipCode>50291</ZipCode>
</Address>
</Person>
此处,由于 Address
类是该类的属性,因此使用 XMLSUMMARY
和 XMLDEFAULTREFERENCE
参数,并且在映射中仅使用 XMLSUMMARY
中列出的类属性。
可以使用“COMPLETE
”选项强制覆盖。例如,以下类也使用 Address
类作为属性,但将 XMLREFERENCE
指定为“COMPLETE
”:
Class xmlsummary.Employee Extends (%RegisteredObject, %XML.Adaptor)
{
Property Name As %String;
Property Address As Address(XMLREFERENCE = "COMPLETE");
}
下面显示了此类实例的 XML
表示形式的示例:
<Employee>
<Name>Malcom Winters</Name>
<Address>
<Street>770 Enders Lane</Street>
<City>Middlebrook</City>
<State>GA</State>
<ZipCode>50293</ZipCode>
</Address>
</Employee>
包含所有具有 XML
映射的属性;在这种情况下,这意味着所有属性都包含在内。