2011-11-16 2 views
1

Je dois ajouter schemaLocation propriété imbriqué sur un autre objet,Set schemaLocation sur XML JAXB

J'ai une classe ...

... 
@XmlRootElement(name = "Comp") 
public class Comp { 
... 

objets que je marshall de cette classe mise Marshaller.JAXB_SCHEMA_LOCATION et il fonctionne très bien, mais maintenant il y a une autre classe qui possède une propriété comme ça ...

@XmlRootElement(name = "TSAT") 
public class TSAT { 
... 
@XmlAnyElement(lax = true) 
    protected Object any; 
... 

puis je mets que prop erty avec une instance de Comp, définissant la propriété Marshaller.JAXB_SCHEMA_LOCATION n'ajoute le schemaLocation attribut, mais pour l'élément OESR et je veux pour l'élément Comp.

J'ai essayé de rassembler l'élément Comp, puis de le définir sur la propriété any, puis de rassembler TSAT, mais j'ai récupéré Comp dans une balise.

ce que je veux:

<TSAT> 
    <Comp schemaLocation="uri"> 
    ... 
    </Comp> 
</TSAT> 

ce que je reçois:

<TSAT schemaLocation="uri"> 
    <Comp> 
    ... 
    </Comp> 
</TSAT>  

ou

<TSAT> 
    <any> 
    &amp;lt;Comp schemaLocation="uri"&amp;gt; 
    ... 
    &amp;lt;/Comp&amp;gt; 
    </any> 
</TSAT> 

Répondre

0

Avez-vous essayez d'utiliser différents marais allers? c'est-à-dire un marshaller qui dirige l'objet Comp. Ce marshaller a la propriété xmlschema. Maréchal JAXBElement dans un DOMResult. Et définissez l'élément de DOMResult dans l'objet Tsat.any, puis marshal Tsat en utilisant un autre marshaller. Je ne garantis pas que ça marchera, mais ça vaut le coup d'essayer.

+0

Demandez des informations supplémentaires dans un commentaire, puis répondez lorsque vous avez cette information. Sinon, ce n'est pas utile. – itsbruce