जब आप एक जटिल प्रकार के रूप में परिभाषित बार्स, बार अलग वर्ग के रूप में उत्पन्न हो जाएगा। इस तरह मुझे स्कीमा को पढ़ने में भी आसान लगता है। बार्स को फू में सूचीबद्ध नहीं किया जाएगा जबतक कि आप maxOccurs को 1 से अधिक मान में नहीं बदलते - आप इसे xs पर नहीं कर सकते: सब कुछ आप xs: अनुक्रम का उपयोग कर सकते हैं। maxOccurs = "असीम" seqence (बार्स की सूची प्राप्त करने:
...
<xs:complexType name="Foo">
<xs:all>
<xs:element name="Bars" type="Bars" />
</xs:all>
</xs:complexType>
<xs:complexType name="Bars">
<xs:sequence>
<xs:element name="Bar" type="barType" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
...
चल xjc के बाद: Foo.java:
...
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "Foo", propOrder = {
})
public class Foo {
@XmlElement(name = "Bars", required = true)
protected Bars bars;
public Bars getBars() {
return bars;
}
public void setBars(Bars value) {
this.bars = value;
}
}
Bars.java:
...
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "Bars", propOrder = {
"bar"
})
public class Bars {
@XmlElement(name = "Bar", required = true)
protected List<String> bar;
...
}
XS के साथ
): एक्सएसडी:
...
<xs:complexType name="Foo">
<xs:sequence>
<xs:element name="Bars" type="Bars" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="Bars">
<xs:sequence>
<xs:element name="Bar" type="barType" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
...
फू।जावा: xjc (https://github.com/dmak/jaxb-xew-plugin) के लिए
...
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "Foo", propOrder = {
"bars"
})
public class Foo {
@XmlElement(name = "Bars", required = true)
protected List<Bars> bars;
public List<Bars> getBars() {
if (bars == null) {
bars = new ArrayList<Bars>();
}
return this.bars;
}
}
दुर्भाग्यवश मैं xsd से जावा फ़ाइलों में जाने की कोशिश कर रहा हूं। – Jim
मैं इस तरह कुछ [यहां मेरे प्रश्न] में देख रहा था (http://stackoverflow.com/questions/9240837/how-to-write-my-xsd-in-order-to-match-the-desired-xml -और-जावा प्रारूप का उपयोग-JAXB)। क्या XJC का उपयोग करके 'xmlElementWrapper' एनोटेशन उत्पन्न किया जा सकता है? मैं जेनरेट कोड को मैन्युअल रूप से संशोधित नहीं करना चाहूंगा ... –
ब्लेज़: सबसे पहले, आपकी सभी पोस्ट्स के साथ-साथ आपका ब्लॉग (उदाहरण के लिए [यह पोस्ट] (http://blog.bdoughan.com/2010) /09/jaxb-collection-properties.html) जो इसे भी संदर्भित करता है)। हमेशा सुपर-स्पष्ट और बिंदु पर। मैं भी एक साधारण समाधान की तलाश में हूं (यानी एक xjc प्लगइन शामिल नहीं है) जो हमें xjc द्वारा '@ XmlElementWrapper' उत्पन्न करने देगा। यह .xsd में "शून्य" या "पास-थ्रू" होने के लिए तत्व घोषित करने में सक्षम होना बहुत साफ होगा, यानी इसके सभी उप-तत्व स्वचालित रूप से माता-पिता द्वारा निहित किए जाएंगे (या माता-पिता के पास भी अधिक होगा वह ध्वज)। –