2016-07-20 16 views
0

Im folgenden Szenario habe ich einen Marshaller, der ein Objekt & validiert gegen ein xsd auswählt. Ich muss dieses Request-Objekt mehreren xsds innerhalb eines Marshallers zuordnen.Validieren Sie mehrere Schemas gegen einen einzelnen Marshaller im Frühjahr

<bean id="jaxbMarshallerForCOTRequestObject" class="org.springframework.oxm.jaxb.Jaxb2Marshaller"> 
     <property name="classesToBeBound"> 
      <list> 
       <value>com.fidintl.retail.myProject.model.th.Request</value> 
      </list> 
     </property> 
     <property name="schema" value="classpath:internal/test1.xsd"></property> 
     <property name="validationEventHandler" ref="ceFeedXmlValidationEventHandlerService"></property> 
     <property name="marshallerProperties"> 
      <map> 
       <entry key="jaxb.encoding"> 
        <value>ISO-8859-1</value> 
       </entry> 
      </map> 
     </property> 
    </bean> 

Kann jemand wie? Ich versuchte mit <schemas> Tag, aber es hat nicht funktioniert für mich.

Antwort

0

Ich habe dies in Java anstelle von XML mit der Methode setSchemas von Jaxb2Marshaller getan und es funktioniert gut für mich.

Jaxb2Marshaller jaxb2Marshaller = new Jaxb2Marshaller(); 
jaxb2Marshaller.setPackagesToScan(""); //mention packages here 
ClassPathResource xsdONE = new ClassPathResource(""); //path to first xsd 
ClassPathResource xsdTWO = new ClassPathResource(""); //path to second xsd 
jaxb2Marshaller.setSchemaLanguage(XMLConstants.W3C_XML_SCHEMA_NS_URI); 
jaxb2Marshaller.setSchemas(xsdONE, xsdTWO); 
jaxb2Marshaller.afterPropertiesSet(); 

P. S. Ich weiß, dass es eine alte Post ist, aber ich suchte nach der Antwort einige Zeit zurück und stolperte über diesen Posten. Ich konnte die Antwort finden, nachdem ich ein bisschen gegoogelt und dann versucht habe, es auszuprobieren, also dachte ich, es könnte jemandem helfen, der nach einer Antwort sucht.