parse online jaxbcontext jaxb2marshaller example bean spring jaxb

spring - online - string xml to object java



¿Cómo obtener formato xml de jaxb en primavera? (5)

Estaba buscando esto y pensé en compartir el código equivalente.

@Bean public Marshaller jaxbMarshaller() { Map<String, Object> props = new HashMap<String, Object>(); props.put(javax.xml.bind.Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); Jaxb2Marshaller m = new Jaxb2Marshaller(); m.setMarshallerProperties(props); m.setPackagesToScan("com.example.xml"); return m; }

Estoy usando Jaxb2Marshaller como una propiedad de vista para ContentNegotiatingViewResolver. Soy capaz de obtener el xml repsonse. ¿Cómo formateo (impresión bonita)?

<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver"> <property name="mediaTypes"> <map> <entry key="xml" value="application/xml" /> </map> </property> <property name="defaultViews"> <list> <bean class="org.springframework.web.servlet.view.xml.MarshallingView"> <constructor-arg> <bean class="org.springframework.oxm.jaxb.Jaxb2Marshaller"> <property name="classesToBeBound"> <list> </list> </property> </bean> </constructor-arg> </bean> </list> </property> </bean>


Intente establecer esta propiedad en su objeto marshaller:

marshaller.setProperty( Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE )

Aquí está el Javadoc completo para la interfaz Marshaller . Echa un vistazo a la sección Resumen de campo.


La respuesta de Ritesh no funcionó para mí. Tuve que hacer lo siguiente:

<bean class="org.springframework.oxm.jaxb.Jaxb2Marshaller"> <property name="classesToBeBound"> <list> ... </list> </property> <property name="marshallerProperties"> <map> <entry key="jaxb.formatted.output"> <value type="boolean">true</value> </entry> </map> </property> </bean>


Use jaxb.formatted.output en lugar de javax.xml.bind.Marshaller.JAXB_FORMATTED_OUTPUT como

Map<String,Object> map = new HashMap<String,Object>(); map.put("jaxb.formatted.output", true); jaxb2Marshaller.setMarshallerProperties(map);


<bean class="org.springframework.oxm.jaxb.Jaxb2Marshaller"> <property name="classesToBeBound"> <list> .... </list> </property> <property name="marshallerProperties"> <map> <entry> <key> <util:constant static-field="javax.xml.bind.Marshaller.JAXB_FORMATTED_OUTPUT" /> </key> <value type="java.lang.Boolean">true</value> </entry> </map> </property> </bean>