87 votes

JAXB - Supprimer " standalone="yes" " de XML généré

Connaissez-vous un JAXB pour éviter les standalone="yes" d'être générés dans le XML?

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

124voto

so_mv Points 1859

dans JAXB qui fait partie de JDK1.6

marshaller.setProperty(Marshaller.JAXB_FRAGMENT, Boolean.TRUE);

68voto

Sam Points 3315
marshaller.setProperty("com.sun.xml.bind.xmlDeclaration", Boolean.FALSE);

peut être utilisé pour n'avez aucun

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

Cependant, je ne reviendrai pas considérer cette pratique.

68voto

WarFox Points 1094

Vous pouvez soit utiliser

marshaller.setProperty(Marshaller.JAXB_FRAGMENT, Boolean.TRUE);

ou

marshaller.setProperty("com.sun.xml.bind.xmlDeclaration", Boolean.FALSE)

pour désactiver le défaut de déclaration XML, puis ajouter personnalisé de votre déclaration XML,

<?xml version="1.0" encoding="UTF-8"?>

par

marshaller.setProperty("com.sun.xml.bind.xmlHeaders", "<?xml version=\"1.0\" encoding=\"UTF-8\"?>");

pour le xml généré, évitant ainsi le standalone="yes" de la propriété.

6voto

porneL Points 42805

Si vous faites du document dépend DOCTYPE (par exemple l'utilisation des entités nommées), alors il cesse d'être autonome, donc standalone="yes" ne seront pas admis dans la déclaration XML.

Cependant autonome XML peut être utilisé n'importe où (alors que les non-autonome est problématique pour les parseurs XML qui ne charge pas les externes).

Je ne vois pas comment cette déclaration pourrait être un problème, autres que pour l'interopérabilité avec des logiciels qui ne prend pas en charge le XML, mais brisé homegrown XML comme le vaudou.

1voto

Rehtron Points 114
marshaller.setProperty("com.sun.xml.bind.xmlDeclaration", Boolean.FALSE);

Cette configuration dépend de la JRE de SUN intérieure de la mise en œuvre, il ne fonctionne pas sur OpenJDK.

Est-il une croix-plate-forme de façon de le faire?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X