How to override the default name in JAXB using an external binding file?

I have an element that looks something like this.

<xsd:element name="container"> <xsd:complexType> <xsd:choice minOccurs="0" maxOccurs="unbounded"> <xsd:element ref="navmap"/> <xsd:element ref="keymap" /> <xsd:element ref="container" /> <xsd:element ref="ad" /> <xsd:element ref="button" /> <xsd:element ref="checkbox" /> </xsd:choice> </xsd:complexType> </xsd:element> 

Here is the default code that is generated for this element.

 @XmlElements({ @XmlElement(name = "navmap", type = Navmap.class), @XmlElement(name = "keymap", type = Keymap.class), @XmlElement(name = "container", type = Container.class), @XmlElement(name = "ad", type = Ad.class), @XmlElement(name = "button", type = Button.class), @XmlElement(name = "checkbox", type = Checkbox.class), }) protected List<Object> navmapOrKeymapOrContainer; 

My question What do I need to put in the .xjb bindings file to change the default name generated from navmapOrKeymapOrContainer to something else like children ?

+4
source share
1 answer

Example:

 <xs:complexType> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:annotation> <xs:appinfo> <jaxb:property name="Shapes"/> </xs:appinfo> </xs:annotation> <xs:element name="Rectangle" type="Rectangle"/> <xs:element name="Square" type="Square"/> <xs:element name="Circle" type="Circle"/> </xs:choice> </xs:complexType> 

Adapt this to your binding file and it will be done. See here for reference.

Listing 11 shows the secret:

 <jxb:bindings version="1.0" xmlns:jxb="http://java.sun.com/xml/ns/jaxb" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc" jxb:extensionBindingPrefixes="xjc"> <jxb:bindings schemaLocation="po4.xsd" node="/xs:schema"> <jxb:globalBindings> <xjc:superClass name="com.syh. <xjc:serializable uid="12343"/> </jxb:globalBindings> <jxb:bindings node="//xs:element[@name='Widgets']//xs:complexType//xs:choice"> <jxb:property name="Shapes"/> </jxb:bindings> </jxb:bindings> 
+4
source

All Articles