xsd2java
を使ってxsdからJavaクラスを自動生成しました。私はxsdもjavaクラスも変更できません。JAXBElementをjackson xml serializationで使用する方法は?
問題:あるクラスでは、List<JAXBElement>
の要素が生成されます。 JAXBElement
を追加すると、jackson
xmlマーシャラーは適切なxml要素を表示しませんが、JAXBElement
のプロパティはシリアル化されます。 declaredType
、scope
など。以下を参照してください。
@XmlRootElement(name = "bookingRequest")
public class AutogeneratedReq {
private List<JAXBElement<?>> someElements;
}
使用法:
AutogeneratedReq req = new AutogeneratedReq();
JAXBElement<?> person = new ObjectFactory().createPerson();
req.getSomeElements().add(person);
結果:
<someElements>
<JAXBElement>
<name>person</name>
<declaredType>net.some.company.Person</declaredType>
<scope>net.some.company</scope><value someattribues="test"/>
<nil>false</nil>
<globalScope>false</globalScope>
<typeSubstituted>false</typeSubstituted>
</JAXBElement>
</someElements>
質問:どのように私は適切なXMLを生成するjackson
またはspring-mvc
を教え、そしてないJAXBElement
シリアライズ明示することができますか?