Obtenir l'exception JAXB comme "Deux classes ont le même nom de type XML ..."
Obtenir le JAXB exception comme "Deux classes ont le même type XML nom...",
Voici les détails de l'exception:
Exception in thread "main"
com.soleil.xml.interne.bind.v2.moment de l'exécution.IllegalAnnotationsException: 1
comtes de IllegalAnnotationExceptions Deux classes ont le même XML
tapez le nom de "ville". Utiliser @XmlType.nom et @XmlType.espace de noms à attribuer
des noms différents. ce problème est lié à la suivante
localisation: au com.de modèle.La ville de public com.de modèle.Ville
com.de modèle.Adresse.getCurrentCity() at com.de modèle.Adresse de cette
problème est lié à l'emplacement suivant: au com.commun.Ville
au public com.commun.Ville com.de modèle.Adresse.getPreviousCity() à
com.de modèle.Adresseà
com.soleil.xml.interne.bind.v2.moment de l'exécution.IllegalAnnotationsException$Builder.vérifier(Inconnu
Source)
com.soleil.xml.interne.bind.v2.moment de l'exécution.JAXBContextImpl.getTypeInfoSet(Inconnu
Source)
com.soleil.xml.interne.bind.v2.moment de l'exécution.JAXBContextImpl.(Inconnu
Source)
com.soleil.xml.interne.bind.v2.moment de l'exécution.JAXBContextImpl$JAXBContextBuilder.construire(Inconnu
Source)
com.soleil.xml.interne.bind.v2.ContextFactory.createContext(Inconnu
Source)
com.soleil.xml.interne.bind.v2.ContextFactory.createContext(Inconnu
Source) au soleil.de réfléchir.NativeMethodAccessorImpl.invoke0(Native
Method) at sun.de réfléchir.NativeMethodAccessorImpl.invoke(Inconnu
Source) au soleil.de réfléchir.DelegatingMethodAccessorImpl.invoke(Inconnu
Source) at java.lang.de réfléchir.La méthode.invoke(Source Inconnue)
javax.xml.bind.ContextFinder.newInstance(Source Inconnue)
javax.xml.bind.ContextFinder.trouver(Source Inconnue)
javax.xml.bind.JAXBContext.newInstance(Source Inconnue)
javax.xml.bind.JAXBContext.newInstance(Source Inconnue)
com.PojoToXSD.principale(PojoToXSD.java:17)
J'ai pris l'exemple comme:
package **com.model**; ---->this package contains 'Address' class and 'City' class
public class Address {
private String areaName;
private City currentCity;
private com.common.City previousCity;
}
package com.model;
public class City {
private String cityName;
}
Une autre ville de la classe en "com.commun".
package **com.common**;
public class City {
private String pinCode;
}
Nous avons besoin de créer XSDs et a besoin de faire le Triage et unmarshalling avec le code existant dans notre projet(comme ci-dessus un exemple de code), le code n'a pas toutes les annotations comme "@XmlRootElement/@XmlType" et nous ne pouvons pas en mesure de modifier le code source.
Je voudrais savoir, c'est qu'il ya une solution pour résoudre le problème ci-dessus, ou toutes les autres façons de créer des XSDs et des gares/unmarshalling(comme MOXy, etc...)?
Ce serait génial si je peux obtenir la solution de l'un quelconque de....Peut merci d'avance.
Merci,
Satya.
source d'informationauteur Satya
Vous devez vous connecter pour publier un commentaire.
Remarque: je suis le EclipseLink JAXB (MOXy) plomb et un membre de la JAXB (JSR-222) groupe d'experts.
Si Vous Pouvez Annoter la Classe
Si vous pouvez modifier le catégorie, vous pouvez simplement ajouter un
@XmlType
annotation à l'un desCity
classes de changer le correspondant du type de schéma XML nom.Si Vous Ne pouvez Annoter la Classe
MOXy offre de mapping externe d'extension de document qui peut être utilisé pour appliquer JAXB de métadonnées à une classe qui ne peut pas être changé.
Pour Plus D'Informations
Mise à JOUR
MOXy externe du document de mapping peut être utilisé pour améliorer ou remplacer (voir: http://blog.bdoughan.com/2011/09/mapping-objects-to-multiple-xml-schemas.html) les métadonnées sur une classe. Si le seul changement que vous devez faire est de à un de la
City
classes, alors vous n'avez pas besoin d'inclure les autres.MOXy comme tout JAXB mise en œuvre s'applique un mappage par défaut pour toutes les classes. Vous avez seulement besoin de fournir des métadonnées pour l'endroit où vous souhaitez que la cartographie des comportements différents de ceux par défaut.
JAXB ne dispose pas d'un standard externe document de mapping. Celui que j'ai décrit est une MOXy extension. Si vous utilisez le JAXB RI, vous pouvez vérifier l'intégration avec Annox.