1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
|
package com.jclark.xsl.sax;
import org.xml.sax.*;
import java.io.*;
public class TextOutputHandler extends HandlerBase implements OutputDocumentHandler {
private Writer writer;
private boolean keepOpen;
public TextOutputHandler() {
}
public TextOutputHandler(Writer writer) {
this.writer = writer;
}
public DocumentHandler init(Destination dest, AttributeList atts)
throws IOException {
String mediaType = atts.getValue("media-type");
if (mediaType == null)
mediaType = "text/plain";
writer = dest.getWriter(mediaType, atts.getValue("encoding"));
keepOpen = dest.keepOpen();
return this;
}
public void endDocument() throws SAXException {
try {
if (writer != null) {
if (keepOpen)
writer.flush();
else
writer.close();
writer = null;
}
}
catch (IOException e) {
throw new SAXException(e);
}
}
public void characters(char cbuf[], int off, int len) throws SAXException {
try {
writer.write(cbuf, off, len);
}
catch (IOException e) {
throw new SAXException(e);
}
}
}
|