मेरे पास एक पशु वर्ग और AnimalExtension नामक पशु का विस्तार है।JAXB @XmlElements, विभिन्न प्रकार लेकिन समान नाम?
public class Animal
public class AnimalExtension extends Animal
दो वर्गों के बीच एकमात्र अंतर यह है कि AnimalExtension में AnimalId नामक एक और उदाहरण चर है। पशु में यह आवृत्ति चर नहीं है।
मेरे पास अपना स्वयं का डेटा प्रकार भी है जो मैं XML के लिए मार्शल और अनैमरल करना चाहता हूं। इस डेटा प्रकार को AnimalList कहा जाता है। AnimalList के अंदर, एक उदाहरण चर के रूप में जानवरों की एक सूची है।
@XmlType(name = "AnimalList")
public class AnimalList{
private List<Animal> animalList;
....
पशु सूची में पशु और पशु दोनों एक्सटेंशन हो सकते हैं। हालांकि, एक्सएमएल पर मैं नहीं चाहता कि तत्व को AnimalExtension के रूप में नामित किया जाए; मैं उन सभी को पशु का तत्व नाम रखना चाहता हूं। मैं केवल अतिरिक्त विशेषता दिखाना चाहता हूं जब जेएक्सबी जानता है कि पशु वास्तव में AnimalExtension का एक उदाहरण है। तो अगर मेरे पास है की एक सूची लग रहा है
तरहList<Animal> animalList = new LinkedList<Animal>();
AnimalExtension animalExtension = new AnimalExtension();
animalExtension.setAnimalId(1);
amimalExtension.setName("Don");
Animal animal = new Animal();
animal.setName("Mike");
animalList.add(animalExtension);
animalList.add(animal);
मैं एक्सएमएल
<AnimalList>
<Animal name="Don" id="1" />
<Animal name="Mike" />
</AnimalList>
इस तरह देखने के लिए चाहते हैं मैं कोड को संकलित करता है लेकिन
@XmlElements(
{
@XmlElement(name = "Animal", type = Animal.class),
@XmlElement(name = "Animal", type = AnimalExtension.class)
}
)
public List<Animal> getEntries() {
return animalList;
}
करने का प्रयास किया क्या है जब मैं अपना सर्वर चलाने की कोशिश करता हूं। यह मुझे यह अजीब त्रुटि देता है जो कि क्या हो रहा है (बीनक्रिएशन अपवाद) से इतना असंबंधित है। मैंने XmlElement का नाम प्रत्येक प्रकार के लिए अलग होने की कोशिश की और यह काम करता है, लेकिन यहां चुनौती नाम को समान बनाना है।
AnimalAdapter
के बाद से AnimalExtension पशु का एक सुपर सेट हम इसका इस्तेमाल/एक्सएमएल का उपभोग उत्पादन करने के लिए होगा:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'encryptionPayloadContentProvider'
एक एक्सएमएल कैसे JAXB जो वर्ग जावा ऑब्जेक्ट निर्माण के लिए उपयोग करने के लिए निर्धारित करने के लिए माना जाता है को देखते हुए? क्या यह 'आईडी' विशेषता का अस्तित्व है? क्या होगा यदि आईडी विशेषता के साथ 'AnimalEnhacement' नामक अन्य श्रेणी थी? –
अच्छा बिंदु lol। उस बारे में सोचा नहीं था। – denniss