この質問にはさまざまな疑問がありますが、これをさらにカタログ化する余地があると感じています。でJaxbで生成されたクラスでは、指定されたタイプの代わりにJAXBElementが使用されました。
<xs:element name="lastXdigits" type="xs:string" nillable="true" minOccurs="1"/>
結果:
protected String date;
@XmlElement(name = "lastXdigits", required = true, nillable = true)
protected String lastXDigits;
にXSDを変更
protected String date;
@XmlElementRef(name = "lastXdigits", namespace = "http://xxxxxxx", type = JAXBElement.class)
protected JAXBElement<String> lastXDigits;
:
私は2つの要素の定義
<xs:complexType name="elementA">
<xs:sequence>
<xs:element name="date" type="xs:string" minOccurs="0"/>
<xs:element name="lastXdigits" type="xs:string" nillable="true" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
これが発生してXSDを持っています
と使用:中
<xs:element name="lastXdigits" type="xs:string" minOccurs="0"/>
結果:
protected String date;
@XmlElement(name = "lastXdigits")
protected String lastXDigits;
は、これは私には非常に奇妙に思えます。最初のケースでlastXDigitsがJAXBElement型として生成されるのはなぜですか?また、すべての場合にString型で十分ではないのはなぜですか?また、jaxbは、名前とは別の定義が同じ場合、これらの2つの要素を別々に扱うべきですか?
私はjaxb 2.0.5のjaxb-xjc antタスクを使用しています。
これは疑わしいと思われますか、またはこれらの違いについては正当な理由がありますか?
私は存在しない要素とnullの値の区別に興味がある場合はこれが関係すると思いますが、ほとんどの場合、誰も本当に気にせず、間接的なレベルの間接化は単なる迷惑です。 – Ellis
はい、しかし、私はいくつかの例では、それが有効な区別をするかもしれないと思います。 –