xml - wsdl编写 - nillable和minOccurs XSD元素属性



xml soap (1)

您需要决定是将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是这样做的方式。 如果你禁止对可以作为对象的东西进行计算,那么工具包会恼人地使用数组来找到表示缺席的方法。

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

另一方面,如果你有一个基本类型(例如int ),nillable将导致问题,因为没有从xsi:nil到基元的映射。

我来回设置一个元素minOccurs="0"nillable="true"

我正在阅读this文章,现在在我的WSDL中,我不确定使用它们是否值得。 本文给出了一个很好的例子来表示你可能在其中散布空值的数组,因为只有minOccurs="0"才能做到这一点。 现在,我一直在使用的约定是,如果一个元素不是可选的,那么它就不是可用的。 根据我的理解和我的问题所在的区别在于,通过将nillable属性应用于元素,我说你可以传递相当于NULL值的XSD? 否则,没有nillable属性的元素必须在限制内放置一个值?