当前位置: 首页 > news >正文

第五章 将对象映射到 XML - 指定映射 XML 文档的格式选项

文章目录

  • 第五章 将对象映射到 XML - 指定映射 XML 文档的格式选项
  • 指定映射 `XML` 文档的格式选项
  • 控制简单属性的映射形式
    • 基本 `XMLPROJECTION` 变体
  • 将属性映射为内容

第五章 将对象映射到 XML - 指定映射 XML 文档的格式选项

指定映射 XML 文档的格式选项

XML 文档有两种基本格式:文字格式和编码格式(SOAP 编码格式)。有关这些格式的示例,请参阅 XML 工具简介。当从启用 XML 的类导出数据或将数据导入到启用 XML 的类时,可以指定其中一种格式。

当将 %XML.Adaptor 添加到类并编译它时, IRIS 会将附加代码写入生成的例程。默认情况下,此附加代码支持这两种格式。如果只需要一种格式,则可以抑制其他格式并减少生成的代码量。为此,请为该类指定 XMLFORMAT 参数。使用以下值之一(不区分大小写):

  • "LITERAL" — 该类仅支持文字格式。
  • "ENCODED" — 该类仅支持编码格式。 (它支持 SOAP 1.1SOAP 1.2 版本)。
  • Null(默认值)— 该类支持文字格式和编码格式。

控制简单属性的映射形式

简单属性是类型为数据类型类或未声明类型的属性(任何没有指定类型的属性都假定为字符串)。

要控制简单属性的 XML 映射的形式,请设置该属性的 XMLPROJECTION 参数。使用以下值之一(不区分大小写):

XMLPROJECTION 的价值对非集合属性的影响
"ELEMENT"该属性被映射为一个元素。这是非集合属性的默认值。
"ATTRIBUTE"该属性被映射为属性。
"XMLATTRIBUTE"该属性被映射为带有前缀 xml 的属性。
"WRAPPED"该属性被映射为具有子元素的元素;子元素的名称基于属性的数据类型。
"CONTENT"该属性被映射为该类的主要内容(即,该属性的内容是在没有任何封闭元素的情况下编写的)。在任何类中,都不能为多个属性指定该值。
"NONE"该属性不会映射为 XML

XMLPROJECTION 参数还接受值“COLLECTION”“ELEMENTREF”,但这些值已被弃用并且未在此处记录。

基本 XMLPROJECTION 变体

以下类定义了使用除“CONTENT”之外的 XMLPROJECTION 的所有变体的简单属性:

Class xmlproj.SimpleProps Extends (%RegisteredObject, %XML.Adaptor)
{Property Simple1 As %String (XMLPROJECTION="attribute");Property Simple2 As %String (XMLPROJECTION="xmlattribute");Property Simple3 As %String;Property Simple4 As %String (XMLPROJECTION="element");Property Simple5 As %String (XMLPROJECTION="wrapped");Property Simple6 As %String (XMLPROJECTION="none");}

下面显示了此类实例的 XML 表示形式的示例:

<SimpleProps Simple1="The quick" xml:Simple2="brown fox"><Simple3>jumps</Simple3><Simple4>over</Simple4><Simple5><string>the lazy</string></Simple5>
</SimpleProps>

将属性映射为内容

“CONTENT”值使能够将类映射为具有一些文本内容和可能的一些属性但没有子元素的简单元素。

Class xmlproj.SimpleContentProp Extends (%RegisteredObject, %XML.Adaptor)
{Property Simple1 As %String(XMLPROJECTION = "content");Property Simple2 As %String(XMLPROJECTION = "attribute");Property Simple3 As %String(XMLPROJECTION = "element");}

当导出此类的实例时:

  • 如果标有“CONTENT”的属性有值,则该值将导出为类的内容。任何映射为属性的属性也会被导出。其他属性将被忽略。例如:
<SimpleContentProp Simple2="other value">The quick brown fox jumps over the lazy dog</SimpleContentProp>
  • 如果标有“CONTENT”的属性为 null,则该属性将被忽略,并且其他属性均按照其 XMLPROJECTION 值指定的方式导出。例如:
<SimpleContentProp Simple2="other value"><Simple3>yet another value</Simple3>
</SimpleContentProp>

对于任何类中的多个属性,不能将 XMLPROJECTION 指定为“CONTENT”。此外,只能将此值用于包含简单文字值的属性,而不是集合或其他类型的对象。

相关文章:

  • 5、鸿蒙项目远程调试
  • 目标检测—YOLO系列(二 ) 全面解读论文与复现代码YOLOv1 PyTorch
  • 【数据结构】栈与队列的实现
  • Elasticsearch 索引库操作与 Rest API 使用详解
  • Cloud
  • 【解决】使用Element-Plus icon图标不显示
  • 云ES高级监控告警
  • 【机器学习】朴素贝叶斯算法:多项式、高斯、伯努利,实例应用(心脏病预测)
  • 跨境电商测评新方案,安全可靠,高成功率
  • Python开源项目GPEN——人脸重建(Face Restoration),模糊清晰、划痕修复及黑白上色的实践
  • 基于蝠鲼觅食算法优化概率神经网络PNN的分类预测 - 附代码
  • 简单的 UDP 网络程序
  • Flink CDC
  • Android R.fraction
  • 快速使用vscode写python
  • JavaScript-如何实现克隆(clone)函数
  • 「前端」从UglifyJSPlugin强制开启css压缩探究webpack插件运行机制
  • canvas实际项目操作,包含:线条,圆形,扇形,图片绘制,图片圆角遮罩,矩形,弧形文字...
  • Cookie 在前端中的实践
  • PHP 小技巧
  • web标准化(下)
  • 漂亮刷新控件-iOS
  • ​iOS实时查看App运行日志
  • # include “ “ 和 # include < >两者的区别
  • #include到底该写在哪
  • %3cli%3e连接html页面,html+canvas实现屏幕截取
  • (9)YOLO-Pose:使用对象关键点相似性损失增强多人姿态估计的增强版YOLO
  • (Redis使用系列) Springboot 使用redis实现接口幂等性拦截 十一
  • (安全基本功)磁盘MBR,分区表,活动分区,引导扇区。。。详解与区别
  • (第9篇)大数据的的超级应用——数据挖掘-推荐系统
  • (附源码)springboot宠物管理系统 毕业设计 121654
  • (力扣)1314.矩阵区域和
  • (四) 虚拟摄像头vivi体验
  • .locked1、locked勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .net core 6 集成 elasticsearch 并 使用分词器
  • .net core 调用c dll_用C++生成一个简单的DLL文件VS2008
  • .NET core 自定义过滤器 Filter 实现webapi RestFul 统一接口数据返回格式
  • .net mvc actionresult 返回字符串_.NET架构师知识普及
  • .Net 转战 Android 4.4 日常笔记(4)--按钮事件和国际化
  • .Net6 Api Swagger配置
  • .NET学习教程二——.net基础定义+VS常用设置
  • @require_PUTNameError: name ‘require_PUT‘ is not defined 解决方法
  • @value 静态变量_Python彻底搞懂:变量、对象、赋值、引用、拷贝
  • [ Linux ] Linux信号概述 信号的产生
  • [] 与 [[]], -gt 与 > 的比较
  • [Android]竖直滑动选择器WheelView的实现
  • [Avalon] Avalon中的Conditional Formatting.
  • [BZOJ 1040] 骑士
  • [DevEpxress]GridControl 显示Gif动画
  • [EMWIN]FRAMEWIN 与 WINDOW 的使用注意
  • [javaSE] GUI(事件监听机制)
  • [LeetCode]284. Peeking Iterator(C++,类,暴力)
  • [MSSQL]GROUPING SETS,ROLLUP,CUBE初体验
  • [Oh My C++ Diary]operator++()和operator++(int)的区别
  • [python基础] python 2与python 3之间的区别 —— round