Supprimer préfixe d'espace de noms alors que JAXB de triage
J'ai JAXB les objets créés à partir d'un schéma. Tout regroupement, les éléments xml sont arriver annoté avec ns2. J'ai essayé toutes les options qui existent sur le net pour ce problème, mais aucun d'entre eux travaille. Je ne peux pas modifier mon schéma ou de changer package-info.java. S'il vous plaît aider
Une autre solution mentionnée ici [stackoverflow.com/a/29945934/4745777][1] [1]: stackoverflow.com/a/29945934/4745777
OriginalL'auteur user2487308 | 2013-06-20
Vous devez vous connecter pour publier un commentaire.
Après beaucoup de recherches et de bricolage, j'ai enfin réussi à parvenir à une solution à ce problème. Veuillez accepter mes excuses pour ne pas poster des liens vers les références d'origine - il y a beaucoup et je ne prenais pas de notes - mais cette est certainement utile.
Ma solution utilise un filtrage
XMLStreamWriter
qui s'applique un vide de l'espace de noms contexte.Vous pouvez trouver un
DelegatingXMLStreamWriter
ici.Vous pouvez ensuite filtrer la sérialisation xml avec:
Je suis sûr qu'il existe des mécanismes plus efficaces, mais je sais que celui-ci fonctionne.
OriginalL'auteur OldCurmudgeon
Pour moi, seulement la modification de la package-info.java la classe a travaillé comme un charme, exactement comme zatziky a déclaré :
package-info.java
Si vous utilisez xjc pour générer jaxb des artefacts d'un xsd par un .xjb fichier, l'package-info.java est genereated et vous ne devriez pas modifier manuellement. Si vous utilisez Maven pour exécuter xjc, vous pouvez utiliser le maven-jaxb2-plugi avec le github.com/Siggen/jaxb2-namespace-prefix. Cela permet d'ajouter des préfixes d'espace de noms pour les .xjb fichier (qui est l'entrée de xjc pour personnaliser la façon dont le code est généré).
OriginalL'auteur cata2d
Vous pouvez laisser les espaces de noms être écrit qu'une seule fois. Vous aurez besoin d'une classe proxy de la XMLStreamWriter et un package-info.java. Ensuite, vous allez faire dans votre code:
Classe Proxy (la méthode est "writeNamespace"):
package-info.java:
OriginalL'auteur zatziky
Vous pouvez utiliser le
NamespacePrefixMapper
extension pour contrôler les préfixes d'espace de noms pour votre cas d'utilisation. La même extension est prise en charge par le JAXB de référence de mise en œuvre et EclipseLink JAXB (MOXy).OriginalL'auteur Blaise Doughan
J'ai obtenu le travail par le paramètre de la propriété:
OriginalL'auteur App Work