gpt4 book ai didi

xml - nillable 和 minOccurs XSD 元素属性

转载 作者:数据小太阳 更新时间:2023-10-29 01:37:38 25 4
gpt4 key购买 nike

我反复将元素设置为 minOccurs="0"nillable="true"

我正在阅读 this文章和现在在我的 WSDL 中,我不确定同时使用两者是否值得。这篇文章提供了一个很好的示例来表示数组,其中可能散布着空值,因为仅使用 minOccurs="0" 无法做到这一点。现在,我一直遵循的惯例是,如果一个元素不是可选的,那么它就不可为 nillable。据我了解,我的问题所在的区别是,通过将 nillable 属性应用于元素,我是说您可以传入相当于 NULL 值的 XSD?否则,没有 nillable 属性的元素的值必须在限制范围内吗?

最佳答案

您需要决定是将 XML 视为 XML,还是将 XML 视为一种将 Java(或其他)对象从这里传输到那里的方式。

在 XML 中,nillable 允许构造 <myelement xsi:nil='true'/>作为显式缺失值的指示符,如 SQL NULL。这在语义上不同于 <myelement/> .两者都与什么都不同。因此,在查看 XML 时,您必须区分四种情况:

<!-- nothing -->
<myElement attr1='true'>some content</myElement>
<myElement/>
<myElement xsi:nil='true'/>

另一方面,如果您主要关注 Java —— 可能是因为您正在使用 SOAP,那么您需要考虑 Java 对象如何来回映射。

对于任何继承自 Object 的 Java 项,JAXB 和其他映射技术都需要一种方法来处理空值。 Nillable 是做到这一点的方法。如果你禁止在可以是对象的东西上使用 nillable,工具包会烦人地使用数组来找到表示不存在的方法。

另一方面,如果您有一个数组,请记住数组本身 是一个对象,并且可以为空。因此,每个工具包都必须区分零元素数组和空值。

另一方面,如果您有原始类型(例如 int ),nillable 会导致问题,因为没有从 xsi:nil 到原始类型的映射。

关于xml - nillable 和 minOccurs XSD 元素属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1903062/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com