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