Comment utiliser le printemps de maréchal et unmarshal xml?
J'ai un ressort de démarrage du projet. J'ai un peu de xsds dans mon projet. J'ai généré les classes à l'aide de maven-jaxb2-plugin. J'ai utilisé cette tutoriel pour obtenir un échantillon de printemps de démarrage de l'application en cours d'exécution.
import org.kaushik.xsds.XOBJECT;
@SpringBootApplication
public class JaxbExample2Application {
public static void main(String[] args) {
//SpringApplication.run(JaxbExample2Application.class, args);
XOBJECT xObject = new XOBJECT('a',1,2);
try {
JAXBContext jc = JAXBContext.newInstance(User.class);
Marshaller marshaller = jc.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
marshaller.marshal(xObject, System.out);
} catch (PropertyException e) {
//TODO Auto-generated catch block
e.printStackTrace();
} catch (JAXBException e) {
//TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Mais mon souci est que j'ai besoin d'avoir tous les jaxb classes du schéma mappé. Aussi est-il quelque chose au Printemps que je peux utiliser pour rendre ma tâche plus facile. J'ai regardé le Printemps OXM projet, mais il avait le contexte de l'application configurée en xml. N'printemps de démarrage avoir tout ce que je peux utiliser de la boîte. Des exemples seront utiles.
Modifier
J'ai essayé xerx593 réponse et j'ai couru un test simple à l'aide de la méthode main
JaxbHelper jaxbHelper = new JaxbHelper();
Jaxb2Marshaller marshaller = new Jaxb2Marshaller();
marshaller.setClassesToBeBound(XOBJECT.class);
jaxbHelper.setMarshaller(marshaller);
XOBJECT xOBJECT= (PurchaseOrder)jaxbHelper.load(new StreamSource(new FileInputStream("src/main/resources/PurchaseOrder.xml")));
System.out.println(xOBJECT.getShipTo().getName());
Il fonctionnait parfaitement bien. Maintenant j'ai juste besoin de le brancher à l'aide de spring boot.
Jaxb2Marshaller
et de l'utiliser.Tous les exemples montrent xml de configuration de jaxb2Marshaller, je suis à la recherche d'un exemple de configuration Java.
Ce qui est si dur sur
new Jaxb2Marshaller()
?
OriginalL'auteur Kaushik Chakraborty | 2017-06-21
Vous devez vous connecter pour publier un commentaire.
OXM est certainement la bonne pour vous!
Un simple java configuration d'un Jaxb2Marshaller ressemblerait à:
Dans votre Application/Service de classe que vous pourriez approche comme ceci:
Voir Jaxb2Marshaller-javadoc, et d'un Réponse
marshaller.setPackagesToScan("org.kaushik.xsds")
(qui contiendrait mon xjc généré par JAXB-classes), à droite?OriginalL'auteur xerx593
Si vous voulez juste
serializing/deserializing
bean avec XML. Je pense quejackson fasterxml
est un bon choix:maven:
Consulter: https://github.com/FasterXML/jackson-dataformat-xml
fasterxml
ont beaucoup de limitations - regarder attention avant de l'utiliser.OriginalL'auteur bluearrow
Printemps de DÉMARRAGE est très intelligent et il peut comprendre ce que vous avez besoin avec un peu d'aide.
De faire XML marshalling/unmarshalling de travail, il vous suffit d'ajouter des annotations @XmlRootElement de classe et @XmlElement pour les champs sans acquéreur et de la cible la classe va sérialiser/désérialiser automatiquement.
Ici est la DTO exemple
Et le Contrôleur:
Vous pouvez check-out complet exemple de code ici: https://github.com/sergpank/spring-boot-xml
Toutes les questions sont les bienvenues.
OriginalL'auteur sergpank
Vous pouvez utiliser
StringSource
/StringResult
de lire /lire le fichier xml source avec le printempsOriginalL'auteur Mohamed.Abdo