jaxb remplacer un package spécifique généré un ensemble de classes
J'ai un gros tiers de fichier xsd qui tire dans tout un tas d'autres fichiers xsd par le biais des importations. Le tout génère plus de 1000 classes. Quand je dis la xjc (jaxb) processeur pour générer tout dans un emballage spécifique, je reçois toutes sortes de conflits de noms. Si je ne spécifiez pas un paquet, alors le processeur crée des packages java à l'aide de la cible attributs dans les fichiers xsd, et le tout génère sans erreurs.
Le problème est que la structure du package est terrible parce que les noms de cible sont choisis vraiment mal. D'autres développeurs de la haine. Ils ont seulement besoin d'un peu de classes.
Donc ce que j'ai essayé de le faire est de donner le processeur d'un bindings.xml fichier où je tiens à préciser que certaines classes soient générés dans un nom de package.
J'ai fait plusieurs aller-retours entre la documentation sur Oracle du site, des forums, des échantillons. Je ne peux pas citer chaque itération de mon fichier de liaisons. Mon incarnation actuelle est: est-ce
<jaxb:bindings
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
version="2.1"
schemaLocation="heavy.xsd"
node="//xsd:element[@name='Error']"
>
<jaxb:bindings node="//xsd:element[@name='Error']">
<jaxb:package name="ABC"/>
</jaxb:bindings>
<jaxb:globalBindings
underscoreBinding="asCharInWord"
localScoping="toplevel"
typesafeEnumMaxMembers="10000"
generateElementClass="true"
>
</jaxb:globalBindings>
<!--
<jaxb:package name="ABC"/>
-->
<!--
<jaxb:schemaBindings>
<jaxb:package name="ABC"/>
</jaxb:schemaBindings>
-->
<!--
<jaxb:schemaBindings>
<jaxb:package name="ABC"/>
<jaxb:nameXmlTransform>
<jaxb:elementName prefix="Error"/>
</jaxb:nameXmlTransform>
</jaxb:schemaBindings>
-->
</jaxb:bindings>
Peu importe ce que je tente, je n'ai pas encore vu de générer les classes dans l'ABC du package. Dans ce cas, je veux Erreur se produit dans ABC. Toute aide serait grandement appréciée.
OriginalL'auteur Mike | 2012-01-12
Vous devez vous connecter pour publier un commentaire.
Malheureusement, il n'est pas possible de faire ce que vous voulez. Je veux la même chose et je suis dans le même bateau. Mais directement à partir des Oracles bouche:
http://docs.oracle.com/cd/E19316-01/819-3669/bnbbt/index.html
Informations Pertinentes:
Donc il n'y a tout simplement aucun moyen sur l'élément pour spécifier un autre package de ses hérité par xsd.
OriginalL'auteur Justin Dennahower
La façon dont je voudrais faire c'est plus comme ceci:
xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
à travers XML? N'est-il pas plus facile de le mettre à la racine de l'élément?L'extrait provient d'un fichier de liaisons est automatiquement généré par un outil, d'où le "sous-optimal" utilisation des espaces de noms XML.
Si je suis à la compréhension de ce fichier de liaisons correctement, il raconte tous les fichiers java générés à partir de XSD1.xsd pour être dans le com.quelque chose de package, renomme l'Erreur de classe à MyError, et tous les fichiers java générés à partir de XSD2.xsd dans le com.somethingelse paquet. Est-ce exact? Mais ce que j'essaie de puzzle est de savoir comment mettre un élément spécifique dans un emballage spécifique, alors que tous les autres éléments entrent dans leur paquet normal noms. J'ai besoin de remplacer un élément spécifique.
Oui, vous avez raison de votre compréhension. Je ne suis pas au courant d'un moyen de contrôle nom de package pour les cours individuels. Ce que je ferais dans ton cas, si je doit pour le faire (disclaimer: je suis biaisé ici par les outils que j'utilise) serait d'isoler le contenu que je veux dans un package java, dans un fichier XSD - pratiquement introduire un ou plusieurs <xsd:include/>s. De cette façon, ça va marcher, si vous avez besoin pour le faire fonctionner. Aussi, dans le processus, le même outil, je suis aide, serait en mesure de retirer tout reste de XSD contenu (dont la portée est déterminée par votre mise en œuvre), afin de réduire les classes
Le monde n'a pas le contrôle de la XSDs. Et ils pourraient changer à l'avenir si vous les analyser. Je suis à la recherche pour la même réponse.
OriginalL'auteur Petru Gardea
Voici un exemple de liaisons.xjb fichier source java est généré dans la couche d'apprêt.myPo paquet.
Ce n'est pas la réponse à sa question. Il veut cartographier un élément en particulier pour une différence de paquet non par xsd.
OriginalL'auteur Vineet Bhatia