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

第四章 将对象映射到 XML - 异常

文章目录

  • 第四章 将对象映射到 XML - 例外
  • 例外
  • 默认映射总结
  • `XML` 映射示例
    • 支持 `XML` 的类示例
    • `XML` 文档示例
    • 示例架构

第四章 将对象映射到 XML - 例外

例外

如果给定属性未映射为 XML,则无需为其引用的类启用 XML。以下属性不会映射到 XML

  • 私有属性
  • 多维属性
  • XMLPROJECTION 参数指定为NONE的属性

如果将 XMLPROJECTION 属性参数设置为“ELEMENT”或其他适当的值,则可以映射私有属性和多维属性。请注意,对于多维属性,只有顶部节点可以包含在映射中。

默认映射总结

默认的 XML 映射如下:

  • 一个对象实例对应于一个顶级 XML 元素。

  • 仅映射属性。没有其他类成员被映射。

    此外,私有属性和多维属性也会被忽略。

  • 属性按它们在Studio中出现的相同顺序投影到XML

  • 任何没有指定类型的属性都被假定为字符串。

  • 每个对象值属性都对应于封闭的顶级 XML 元素中的一个 XML 元素。

    它的属性嵌套在该元素内。

  • 关系的处理方式与列表属性相同。

    XML 映射仅包含关系的一侧;如果尝试映射两侧,则会发生错误。

  • 字符流被映射为字符串。

  • 二进制流使用采用 Base-64 编码的字符串进行映射。

XML 映射示例

本节显示支持 XML 的类及其 XML 映射。

支持 XML 的类示例

下面显示了一个支持 XML 的类,其中包括主要的结构属性变体:

Class Basics.BasicDemo Extends (%RegisteredObject, %XML.Adaptor)
{Parameter XMLTYPENAMESPACE = "mytypes";Property SimpleProp As %String;Property ObjProp As SimpleObject;Property Collection1 As list Of %String;Property Collection2 As list Of SimpleObject;Property MultiDimProp As %String [ MultiDimensional ];Property PrivateProp As %String [ Private ];}

XMLTYPENAMESPACE 参数指定此类中定义的类型的目标命名空间。

SimpleObject 类也支持 XML

Class Basics.SimpleObject Extends (%RegisteredObject, %XML.Adaptor)
{Parameter XMLTYPENAMESPACE = "mytypes";Property MyProp As %String;Property AnotherProp As %String;}

XML 文档示例

下面显示了从 BasicDemo 类的实例生成的 XML 文档:

<?xml version="1.0" encoding="UTF-8"?>
<BasicDemo><SimpleProp>abc</SimpleProp><ObjProp><MyProp>12345</MyProp><AnotherProp>67890</AnotherProp></ObjProp><Collection1><Collection1Item>list item 1</Collection1Item><Collection1Item>list item 2</Collection1Item></Collection1><Collection2><SimpleObject><MyProp>12345</MyProp><AnotherProp>67890</AnotherProp></SimpleObject><SimpleObject><MyProp>12345</MyProp><AnotherProp>67890</AnotherProp></SimpleObject></Collection2>
</BasicDemo>

示例架构

下面显示了两个示例类中使用的 XML 类型命名空间的架构:

<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:s="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="mytypes"><complexType name="BasicDemo"><sequence><element minOccurs="0" name="SimpleProp" type="s:string"/><element minOccurs="0" name="ObjProp" type="s01:SimpleObject" xmlns:s01="mytypes"/><element minOccurs="0" name="Collection1" type="s02:ArrayOfCollection1ItemString" xmlns:s02="mytypes"/><element minOccurs="0" name="Collection2" type="s03:ArrayOfSimpleObjectSimpleObject" xmlns:s03="mytypes"/></sequence></complexType><complexType name="SimpleObject"><sequence><element minOccurs="0" name="MyProp" type="s:string"/><element minOccurs="0" name="AnotherProp" type="s:string"/></sequence></complexType><complexType name="ArrayOfCollection1ItemString"><sequence><element maxOccurs="unbounded" minOccurs="0" name="Collection1Item" nillable="true" type="s:string"/></sequence></complexType><complexType name="ArrayOfSimpleObjectSimpleObject"><sequence><element maxOccurs="unbounded" minOccurs="0" name="SimpleObject" nillable="true" type="s04:SimpleObject" xmlns:s04="mytypes"/></sequence></complexType>
</schema>

相关文章:

  • 读书笔记:彼得·德鲁克《认识管理》第21章 企业与政府
  • Spring JdbcTemplate Junit 测试 - ResultSetExtractor/RowMapper
  • 元数据管理,数字化时代企业的基础建设
  • make的内置变量
  • echarts 实现同一组legend控制两个饼图示例
  • QT小记:The QColor ctor taking ints is cheaper than the one taking string literals
  • 2023.11.14 关于 Spring Boot 创建和使用
  • 腾讯云服务器怎么买便宜?腾讯云服务器优惠链接
  • 怎么使用Cpolar+Lychee搭建私人图床网站并实现公网访问?
  • Elasticsearch 中 term和 query 哪个更精确,有什么区别
  • Mybatis中limit用法补充
  • list用stream流转map报key重复
  • Linux---(七)Makefile写进度条(三个版本)
  • image图片之间的间隙消除
  • 开源与闭源:数字化时代的创新与合作之争
  • 【108天】Java——《Head First Java》笔记(第1-4章)
  • 2017年终总结、随想
  • Brief introduction of how to 'Call, Apply and Bind'
  • CSS 专业技巧
  • ECMAScript6(0):ES6简明参考手册
  • HTTP中GET与POST的区别 99%的错误认识
  • Invalidate和postInvalidate的区别
  • React Transition Group -- Transition 组件
  • RedisSerializer之JdkSerializationRedisSerializer分析
  • Spark学习笔记之相关记录
  • 从0到1:PostCSS 插件开发最佳实践
  • 基于组件的设计工作流与界面抽象
  • 前端相关框架总和
  • 前端学习笔记之观察者模式
  • 扫描识别控件Dynamic Web TWAIN v12.2发布,改进SSL证书
  • 提升用户体验的利器——使用Vue-Occupy实现占位效果
  • 体验javascript之美-第五课 匿名函数自执行和闭包是一回事儿吗?
  • 线性表及其算法(java实现)
  • 浅谈sql中的in与not in,exists与not exists的区别
  • (2)STL算法之元素计数
  • (C#)一个最简单的链表类
  • (附源码)php投票系统 毕业设计 121500
  • (附源码)springboot 房产中介系统 毕业设计 312341
  • (附源码)springboot猪场管理系统 毕业设计 160901
  • (附源码)ssm经济信息门户网站 毕业设计 141634
  • (蓝桥杯每日一题)平方末尾及补充(常用的字符串函数功能)
  • (篇九)MySQL常用内置函数
  • (四)图像的%2线性拉伸
  • (转贴)用VML开发工作流设计器 UCML.NET工作流管理系统
  • ****Linux下Mysql的安装和配置
  • .form文件_一篇文章学会文件上传
  • .NET 4.0网络开发入门之旅-- 我在“网” 中央(下)
  • .NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划
  • .net FrameWork简介,数组,枚举
  • .NET Remoting学习笔记(三)信道
  • .NET 使用 JustAssembly 比较两个不同版本程序集的 API 变化
  • .net 无限分类
  • .NET 中小心嵌套等待的 Task,它可能会耗尽你线程池的现有资源,出现类似死锁的情况
  • //解决validator验证插件多个name相同只验证第一的问题
  • @FeignClient 调用另一个服务的test环境,实际上却调用了另一个环境testone的接口,这其中牵扯到k8s容器外容器内的问题,注册到eureka上的是容器外的旧版本...