URL dtdURL = getResource("/xml/book/books.dtd");
InputStream is = dtdURL.openStream();
Reader dtdReader = new InputStreamReader(is);
// create an instance of DTD marshaller
DtdMarshaller marshaller = new DtdMarshaller();
marshaller.addBinding("since", new TypeBinding()
{
public Object unmarshal(String value)
{
// todo: implement unmarshal
throw new UnsupportedOperationException("unmarshal is not implemented.");
}
public String marshal(Object value)
{
return SimpleTypeBindings.marshalDate((Calendar)value);
}
}
);
// map publicId to systemId as it should appear in the resulting XML file
marshaller.mapPublicIdToSystemId("-//DTD Books//EN", "resources/xml/book/books.dtd");
// create an instance of ObjectModelProvider with the book instance to be marshalled
ObjectModelProvider provider = new BookObjectProvider();
// marshal the book
marshaller.marshal(dtdReader, provider, book, xmlOutput);
// close DTD reader
dtdReader.close();
String xml = xmlOutput.getBuffer().toString();