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

第七章 将对象映射到 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 映射的属性;在这种情况下,这意味着所有属性都包含在内。

相关推荐
子兮曰5 天前
jev-ultrafast 深度解析:7 秒订机票的浏览器 Agent 是如何炼成的
前端·后端·agent
子兮曰5 天前
Jev 爆发一周:7 秒 Agent 背后的 System One 生态与三场争议
前端·后端·ai编程
前端小万5 天前
写公众号赚了 3000 块后,我做了一款叫 "一键成稿" 的软件
前端·微信小程序
爱勇宝5 天前
ZCode 开源 24 小时:一份没有历史的账本,回答不了"有没有偷代码"
前端·后端·chatglm (智谱)
胡写代码5 天前
别再前后端各写一套表单校验了
java·后端
三十而立洋5 天前
Cookie 详解:从产生到安全,一次讲透
前端·javascript
大勇前进5 天前
原生 PHP 还是 Laravel?小项目到底要不要上框架
后端
yuzhi_liu5 天前
我用 LangGraph4j 实现 Multi-Agent Supervisor
后端
alsmile5 天前
Node-RED 之外,国产规则引擎的新方案:基于标准语法,Go 先行实现
后端·开源·go
大白805 天前
PHP 内存溢出排查思路:看懂报错日志,精准定位问题
后端