J'ai un schéma xsd example.xsd sur lequel j'ai créé des classes pojo (essayé auto par Jaxb IntellIj Idea, ou manuellement).Jaxb2Marshaller ne peut pas sérialiser POJO par schéma xsd: "ne peut pas trouver la déclaration de l'élément"
J'ai l'intention de sérialiser pojo pour mon service de jms de ressort et valider un contre xsd avant l'envoi.
//init marshaller
Jaxb2Marshaller marshaller = new Jaxb2Marshaller();
....
marshaller.setSchema(new ClassPathResource("/example.xsd"));
marshaller.afterPropertiesSet();
//trying to serialize
MyResponse res = new MyResponse();
Jaxb2Marshaller jaxb2Marshaller = jaxb2MarshallerGenerated();
OutputStream outputStream = new ByteArrayOutputStream();
jaxb2Marshaller.marshal(res, new StreamResult(outputStream));
Mon xsd ressemble
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
attributeFormDefault="unqualified" elementFormDefault="qualified"
targetNamespace="http://example/schemas">
<xs:element xmlns:sch="http://example/schemas" name="myResponse" type="sch:myResponseType"/>
<xs:complexType name="myResponseType">
<xs:sequence>
....
</xs:sequence>
....
Mes classes POJO ressemble:
@XmlRootElement
public class MyResponse {
//some jaxb stuff
}
Je ne peux pas échapper exception:
ne peut pas trouver la déclaration de l'élément « myResponse
J'ai essayé sans espace de noms et d'autres moyens.
Pourriez-vous expliquer ce que vous voulez dire? Quelque chose doit être ajouté aux classes générées? J'ai le même problème, mais je n'utilise pas IntelliJ. – Line
@line oui, les classes générées doit contenir namespace: ..XmlType (name = "UnNom", namespace = "yourNameSpace") et chaque élément devrait contenir un: ..XmlElement (name = "someName2", namespace = "yourNameSpace") .. –
OK. Merci, mais je voudrais préciser les noms plutôt au niveau de l'emballage. Et encore une chose, vous devriez accepter votre propre réponse;) https://stackoverflow.com/help/self-answer – Line