herhangi bir şekilde bağlamak veya Marsaller oluştururken JAXBContext kullanılmaz sınıflardan XmlElements başvuru var mı?XmlElements, JAXBContext'te kullanılmayan bir nesneden nasıl bağlanır?
Ben XML dosyasına JAXB açıklamalı nesneyi dönüştürmek için Jersey kullanıyorum.
Bu
Ben kurulduğundan. Tüm sınıflar aynı pakette. Her durum için sınıfları B, C veya D@XmlAccessorType(XmlAccessType.NONE)
class A {
private Foo foo;
public SomeObject getSomeObjetct() {
return foo.getSomeObjetct();
}
protected setFooBehavior(Foo f) {
this.foo = f;
}
/* From this point the XmlElements are commond to all subclasses
* and no other special manipulation take place.
*/
@XmlElement(...)
...someGetterMethod(){}
@XmlElement(...)
...someOtherGetterMethod(){}
@XmlElement(...)
...someThirdGetterMethod(){}
...
...
}
@XmlRootElement(name = "B")
class B extends A{
setFooBehavior(new FooA());
}
@XmlRootElement(name = "C")
class C extends A{
setFooBehavior(new FooA());
}
@XmlRootElement(name = "D")
class D extends A{
setFooBehavior(new FooB());
}
class FooA {
SomeObject someObject;
@XmlElement(name = "FooA", required = true)
public SomeObject getSomeObjetct() {
return getSomeObjetct();
}
public setSomeObject(SomeObject someObject;) {
this.someObject = SomeObject someObject;;
}
}
class FooB {
SomeObject someObject;
@XmlElement(name = "FooB", required = true)
public SomeObject getSomeObjetct() {
return getSomeObjetct();
}
public setSomeObject(SomeObject someObject;) {
this.someObject = SomeObject someObject;;
}
}
ve Marsaller kullanmak Marsaller için
aşağıdaki xml
sonuçları istiyorum sonunda
JAXBContext jaxbContext = JAXBContext.newInstance(C.class); //or B.class or D.class
Marshaller jaxbMarshaller = jaxbContext.createMarshaller();
olduğunu sınıf C için
<C>
<FooA>someObjectValue</FooA>
</C>
Ve D sınıfı bir çıkış şimdi sırasıyla
<C>
<someObject>someObjectValue</someObject>
<C>
ve
<D>
<someObject>someObjectValue</someObject>
</D>
olduğu gibi olsun ne
<D>
<FooB>someObjectValue</FooB>
</D>
için.
Sorunuzun anladığımdan emin değilim. Görünüşe göre FooA ve FooB JAXB açıklamalıdır (her ikisi de bazıObjetct üzerinde @XmlElement içerir). Ne tür bir hata yapıyorsunuz? Ne çalışmıyor? Çıktının beklentisi nasıl değil? – Pace
Açıklamayı değiştirdim ve beklediğim çıktıyı ve aldığım çıktıyı yazdım. – Chrys