我正在編組(串行化)JAXB bean以輸出流。我如何添加DOCTYPE聲明和xml處理指令來輸出?如何在使用JAXB進行封送時添加DOCTYPE和xml處理指令?
我做目前編組這樣的:
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);
我想有輸出,看起來是這樣的:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Something SYSTEM "some.dtd">
<?xml-stylesheet type="text/xsl" href="some.xsl"?>
JAXB bean的生成代碼,所以我不想改變它們。
有一些黑客和無證技巧(見Making JAXB generate an XML processing instruction)添加xml processing instructions和doctype。但是,這樣做的首選或正確的方法是什麼?
你的意思是另一種方式嗎?如果您使用的是JAXB RI,那麼com.sun.xml.internal.bind.xmlHeaders會起作用,如果使用jaxb impl,那麼它的com.sun.xml.bind.xmlHeaders是正確的? – kalyan 2011-12-19 13:18:49