Comment ajouter des instructions de traitement DOCTYPE et xml lors du rassemblement avec JAXB?
Je suis de triage (sérialisation) JAXB fèves de flux de sortie. Comment puis-je ajouter de la déclaration DOCTYPE et les instructions de traitement xml de sortie?
Je fais actuellement de l'ordonnancement comme ceci:
JAXBContext jaxbContext = JAXBContext.newInstance("com.example.package");
Marshaller marshaller = jaxbContext.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
SchemaFactory schemaFactory = SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema");
Schema schema = schemaFactory.newSchema(schemaSource);
marshaller.setSchema(schema);
marshaller.marshal(object, output);
J'aimerais avoir une sortie qui ressemble à quelque chose comme ceci:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Something SYSTEM "some.dtd">
<?xml-stylesheet type="text/xsl" href="some.xsl"?>
JAXB haricots sont générés code donc je ne veux pas les changer.
Il y a quelques hacks et les sans-papiers astuces (voir Faire JAXB générer une instruction de traitement XML) pour ajouter le les instructions de traitement xml et doctype. Mais ce qui est le préféré de droite ou de façon de le faire?
source d'informationauteur Juha Syrjälä | 2010-05-27
Vous devez vous connecter pour publier un commentaire.
La JAXB RI a un propriétaire
Marshaller
propriétécom.sun.xml.bind.xmlHeaders
(voir XML Préambule de Contrôle:Ceci devrait faire ce dont vous avez besoin. Si vous êtes à l'aide de Java5 et la JAXB RI, alors cela devrait fonctionner. Si vous utilisez Java6 avec ses JAXB mise en œuvre, le
com.sun.xml.bind.xmlHeaders
le nom peut être différent, alors essayez decom.sun.xml.internal.bind.xmlHeaders
à la place.