nillable="true"要求元素必须存在但值可为空(需xsi:nil="true"),minOccurs="0"允许元素完全省略;二者可共用,支持存在非空、存在为空、不存在三种状态。
- 允许三种状态:
<price>123</price>、、或干脆没有<price></price>标签 - 适合灵活的数据契约,比如 WebService 接口新增一个非必填且允许显式空值的字段
java 注解里的对应关系
在 JAX-WS 的 @xmlElement 中:
-
required = false对应 XSD 的minOccurs="0" -
nillable = true直接对应 XSD 的nillable="true" - 注意:
required=false并不意味着值能为 NULL,只是元素可省略;真正支持 null 值需配合nillable=true
基本上就这些。区别不在技术难度,而在设计意图——你是想“跳过这个字段”,还是“保留字段但声明它为空”。