00001
00025 package org.objectweb.jonas_lib.xml;
00026
00027 import java.io.IOException;
00028 import java.io.OutputStream;
00029 import java.io.OutputStreamWriter;
00030 import java.io.Writer;
00031
00032 import org.w3c.dom.Document;
00033
00034 import org.apache.xml.serialize.DOMSerializer;
00035 import org.apache.xml.serialize.Method;
00036 import org.apache.xml.serialize.OutputFormat;
00037 import org.apache.xml.serialize.Serializer;
00038 import org.apache.xml.serialize.SerializerFactory;
00039
00040
00047 public class XMLSerializer {
00048
00052 private static final int DEF_INDENT_SIZE = 4;
00053
00057 private static final int DEF_LINE_WIDTH = 80;
00058
00062 private static final String DEF_LINE_SEP = "\n";
00063
00067 private Document doc;
00068
00072 private OutputFormat format;
00073
00077 private SerializerFactory factory;
00078
00083 public XMLSerializer(Document doc) {
00084 this.doc = doc;
00085
00086 format = new OutputFormat();
00087 setIndent(DEF_INDENT_SIZE);
00088 setLineSeparator(DEF_LINE_SEP);
00089 setLineWidth(DEF_LINE_WIDTH);
00090
00091
00092 factory = SerializerFactory.getSerializerFactory(Method.XML);
00093 }
00094
00099 public void setLineSeparator(String sep) {
00100 format.setLineSeparator(sep);
00101 }
00102
00107 public void setLineWidth(int width) {
00108 format.setLineWidth(width);
00109 }
00110
00115 public void setIndent(int indent) {
00116 format.setIndent(indent);
00117 }
00118
00126 public void serialize(OutputStream os) throws IOException {
00127 serialize(new OutputStreamWriter(os));
00128 }
00129
00137 public void serialize(Writer writer) throws IOException {
00138 Serializer genericSerializer = factory.makeSerializer(writer, format);
00139 DOMSerializer domSerializer = genericSerializer.asDOMSerializer();
00140
00141 domSerializer.serialize(doc);
00142 }
00143 }