nillable="true"要求元素必须存在但值可为空(需xsi:nil="true"),minOccurs="0"允许元素完全省略;二者可共用,支持存在非空、存在为空、不存在三种状态。
nillable="true" 和 minOccurs="0" 都用于处理“空”或“缺失”的情况,但它们作用的对象和语义完全不同:前者管的是值是否可为空,后者管的是元素是否可省略。
当设置 nillable="true" 时,XML 中该元素必须存在,只是它的内容可以显式标记为 null。要表示空值,必须带上 xsi:nil="true" 属性,并且不
能有子内容或文本值。
或
(这是空标签,不等于 nil)或 (空内容 ≠ nil)当设置 minOccurs="0" 时,该元素在 XML 文档中可以彻底省略,不会出现在序列里。它不关心值是否为空,只控制元素是否存在。
... 标签都不出现nillable="true")常见组合是 minOccurs="0" nillable="true",这意味着:该元素可有可无;如果出现,还可以是 nil。
123 、、或干脆没有 标签在 JAX-WS 的 @XmlElement 中:
required = false 对应 XSD 的 minOccurs="0"
nillable = true 直接对应 XSD 的 nillable="true"
required=false 并不意味着值能为 null,只是元素可省略;真正支持 null 值需配合 nillable=true
基本上就这些。区别不在技术难度,而在设计意图——你是想“跳过这个字段”,还是“保留字段但声明它为空”。