第七章 将对象映射到 XML - 指定 XML 摘要

第七章 将对象映射到 XML - 指定 XML 摘要

指定 XML 摘要

当类用作属性时,可以轻松指定要映射到 XML 的类的哪些属性:

  • 在类中,将 XMLSUMMARY 类参数指定为要映射到 XML 的属性的逗号分隔列表,其大小写与类定义中使用的大小写完全相同。请注意,XMLSUMMARY 不能包含伪属性 IDOID

除非还指定以下一个或两个参数,否则此参数无效。

  • 在同一个类中,可以选择将 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 类是该类的属性,因此使用 XMLSUMMARYXMLDEFAULTREFERENCE 参数,并且在映射中仅使用 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 映射的属性;在这种情况下,这意味着所有属性都包含在内。

相关推荐
前端一课几秒前
【前端每天一题】 第 15 题:CSS 水平垂直居中高频方案(Flex / Grid / transform 等)
前端·面试
q***98522 分钟前
Spring Boot:Java开发的神奇加速器(二)
java·spring boot·后端
前端一课4 分钟前
【前端每天一题】🔥 第 19 题:什么是重排(Reflow)和重绘(Repaint)?有什么区别?如何减少?
前端·面试
前端一课4 分钟前
【前端每天一题】🔥 第 14 题:Promise.then 链式调用执行顺序
前端·面试
前端一课5 分钟前
【前端每天一题】🔥 第 18 题:防抖和节流是什么?区别是什么?如何实现?
前端·面试
前端一课7 分钟前
【前端每天一题】第 16 题:数组去重高频方法(Set / filter / reduce / 对象键值法)
前端·面试
前端一课8 分钟前
【前端每天一题】🔥 第 17 题:什么是浅拷贝与深拷贝?如何实现深拷贝?
前端·面试
前端一课10 分钟前
【前端每天一题】🔥 第 20 题:从输入 URL 到页面渲染全过程
前端·面试
前端一课13 分钟前
【前端每天一题】🔥 第 12 题:== 与 === 的区别?为什么 [] == ![] 是 true?
前端·面试
前端一课14 分钟前
【前端每天一题】🔥 第 13 题:原型链查找规则是什么?为什么对象能访问到方法?
前端·面试