J'utilise xjc pour générer des classes Java à partir du schéma XML et ce qui suit est un extrait de la XSD.XML Schema to Java Classes avec XJC
<xs:element name="NameInfo">
<xs:complexType>
<xs:sequence>
<xs:choice>
<xs:element ref="UnstructuredName"/> <!-- This line -->
<xs:sequence>
<xs:element ref="StructuredName"/>
<xs:element ref="UnstructuredName" minOccurs="0"/> <!-- and this line! -->
</xs:sequence>
</xs:choice>
<xs:element ref="SomethingElse" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
Pour la plupart des classes générées sont très bien, mais pour le bloc ci-dessus je recevrais quelque chose comme:
public List<Object> getContent() {
if (content == null) {
content = new ArrayList<Object>();
}
return this.content;
}
avec le commentaire suivant au-dessus:
* You are getting this "catch-all" property because of the following reason:
* The field name "UnstructuredName" is used by two different parts of a schema. See:
* line XXXX of file:FILE.xsd
* line XXXX of file:FILE.xsd
* To get rid of this property, apply a property customization to one
* of both of the following declarations to change their names:
* Gets the value of the content property.
Je placé un commentaire à la fin de la ligne en question.
Pour l'instant, je ne pense pas qu'il sera facile de changer le schéma puisque cela a été décidé entre les fournisseurs et je ne voudrais pas aller sur cette route (si possible) car cela ralentirait un peu les progrès.
J'ai cherché et j'ai trouvé this page, est la personnalisation externe ce que je veux faire? J'ai surtout travaillé avec les classes générées, donc je ne suis pas entièrement familier avec le processus qui génère ces classes. Un exemple simple de la "personnalisation de la propriété" serait génial! Une méthode alternative de génération des classes Java serait bien tant que le schéma peut encore être utilisé.
EDIT: Je dois préciser que les deux UnstructuredName
sont en effet le même élément.
Je ne suis pas tout à fait sûr de savoir comment réarranger les éléments peut aider dans ce cas. Si je peux la "séquence" intérieure dans un autre élément, ce problème serait résolu? Est-ce faisable avec la transformation? Si j'effectue une transformation, j'en aurais besoin d'une pour la transformer en une structure que j'aime et ensuite effectuer une autre transformation dans sa structure d'origine? – nevets1219