Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039 package de.mfuchs.xmlstorage;
00040
00041 import java.io.FileInputStream;
00042 import java.io.FileOutputStream;
00043 import java.io.InputStream;
00044 import java.io.OutputStreamWriter;
00045 import java.io.Writer;
00046
00047 import org.xml.sax.InputSource;
00048
00049
00050
00051
00052
00053 public class XMLDoc extends XMLNode
00054 {
00055 public XMLHeader _header = new XMLHeader();
00056
00057 public XMLDoc()
00058 {
00059 super("");
00060 }
00061
00062 public XMLDoc(final String path) throws Exception
00063 {
00064 super("");
00065
00066 readFile(path);
00067 }
00068
00069 public void readFile(final String path) throws Exception
00070 {
00071 InputStream in = new FileInputStream(path);
00072
00073 InputSource source = new InputSource(in);
00074 source.setSystemId(path);
00075
00076 read(source);
00077 }
00078
00079 public void read(InputSource source) throws Exception
00080 {
00081 XMLDocReader reader = new XMLDocReader(this);
00082
00083 reader.read(source);
00084
00085 _header._additional = reader.getInstructions();
00086 }
00087
00088
00089 public void write(Writer out) throws Exception
00090 {
00091 write(out, FORMAT_SMART);
00092 }
00093
00094
00095
00096 public void write(Writer out, int mode) throws Exception
00097 {
00098 _header.print(out);
00099
00100 if (_children.size() == 1)
00101 _children.getFirst().write(out, mode);
00102 else if (!_children.isEmpty())
00103 throw new Exception("more than one XML root entry");
00104 }
00105
00106
00107 public void writeFormating(Writer out) throws Exception
00108 {
00109 write(out, FORMAT_PRETTY);
00110 }
00111
00112 public void writeFile(final String path) throws Exception
00113 {
00114 writeFile(path, FORMAT_SMART);
00115 }
00116
00117 public void writeFile(final String path, int mode) throws Exception
00118 {
00119 String encoding = _header._encoding.length()>0? _header._encoding: "UTF-8";
00120
00121 Writer out = new OutputStreamWriter(new FileOutputStream(path), encoding);
00122
00123 try {
00124 write(out, mode);
00125 } finally {
00126 out.close();
00127 }
00128 }
00129
00130 public void writeFormating(final String path) throws Exception
00131 {
00132 Writer out = new OutputStreamWriter(new FileOutputStream(path), "UTF-8");
00133
00134 try {
00135 writeFormating(out);
00136 } finally {
00137 out.close();
00138 }
00139 }
00140 }