Frames | No Frames |
1: /* ======================================================================== 2: * JCommon : a free general purpose class library for the Java(tm) platform 3: * ======================================================================== 4: * 5: * (C) Copyright 2000-2005, by Object Refinery Limited and Contributors. 6: * 7: * Project Info: http://www.jfree.org/jcommon/index.html 8: * 9: * This library is free software; you can redistribute it and/or modify it 10: * under the terms of the GNU Lesser General Public License as published by 11: * the Free Software Foundation; either version 2.1 of the License, or 12: * (at your option) any later version. 13: * 14: * This library is distributed in the hope that it will be useful, but 15: * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 16: * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public 17: * License for more details. 18: * 19: * You should have received a copy of the GNU Lesser General Public 20: * License along with this library; if not, write to the Free Software 21: * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, 22: * USA. 23: * 24: * [Java is a trademark or registered trademark of Sun Microsystems, Inc. 25: * in the United States and other countries.] 26: * 27: * -------------- 28: * XMLWriter.java 29: * -------------- 30: * (C) Copyright 2003-2005, by Thomas Morgner and Contributors. 31: * 32: * Original Author: Thomas Morgner; 33: * Contributor(s): David Gilbert (for Object Refinery Limited); 34: * 35: * $Id: XMLWriter.java,v 1.5 2005/11/08 14:42:42 mungady Exp $ 36: * 37: * Changes (from 26-Nov-2003) 38: * -------------------------- 39: * 26-Nov-2003 : Added standard header and Javadocs (DG); 40: * 41: */ 42: 43: package org.jfree.xml.writer; 44: 45: import java.io.IOException; 46: import java.io.Writer; 47: import java.util.Properties; 48: 49: /** 50: * A class for writing XML to a character stream. 51: */ 52: public class XMLWriter extends XMLWriterSupport { 53: 54: /** 55: * The character stream. 56: */ 57: private Writer writer; 58: 59: /** 60: * Creates a new XML writer for the specified character stream. By 61: * default, four spaces are used for indentation. 62: * 63: * @param writer the character stream. 64: */ 65: public XMLWriter(final Writer writer) { 66: this(writer, " "); 67: } 68: 69: /** 70: * Creates a new XML writer for the specified character stream. 71: * 72: * @param writer the character stream. 73: * @param indentString the string used for indentation (should contain 74: * white space, for example four spaces). 75: */ 76: public XMLWriter(final Writer writer, final String indentString) { 77: super(new SafeTagList(), 0, indentString); 78: if (writer == null) { 79: throw new NullPointerException("Writer must not be null."); 80: } 81: 82: this.writer = writer; 83: } 84: 85: /** 86: * Writes the XML declaration that usually appears at the top of every XML 87: * file. 88: * 89: * @throws IOException if there is a problem writing to the character 90: * stream. 91: */ 92: public void writeXmlDeclaration() throws IOException { 93: this.writer.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"); 94: this.writer.write(getLineSeparator()); 95: } 96: 97: /** 98: * Writes an opening XML tag that has no attributes. 99: * 100: * @param name the tag name. 101: * @param close a flag that controls whether or not the tag is closed 102: * immediately. 103: * @throws java.io.IOException if there is an I/O problem. 104: */ 105: public void writeTag(final String name, final boolean close) 106: throws IOException { 107: if (close) { 108: writeTag(this.writer, name, new AttributeList(), close); 109: } 110: else { 111: writeTag(this.writer, name); 112: } 113: } 114: 115: /** 116: * Writes a closing XML tag. 117: * 118: * @param tag the tag name. 119: * @throws java.io.IOException if there is an I/O problem. 120: */ 121: public void writeCloseTag(final String tag) throws IOException { 122: writeCloseTag(this.writer, tag); 123: } 124: 125: /** 126: * Writes an opening XML tag with an attribute/value pair. 127: * 128: * @param name the tag name. 129: * @param attributeName the attribute name. 130: * @param attributeValue the attribute value. 131: * @param close controls whether the tag is closed. 132: * @throws java.io.IOException if there is an I/O problem. 133: */ 134: public void writeTag(final String name, final String attributeName, 135: final String attributeValue, final boolean close) 136: throws IOException { 137: writeTag(this.writer, name, attributeName, attributeValue, close); 138: } 139: 140: /** 141: * Writes an opening XML tag along with a list of attribute/value pairs. 142: * 143: * @param name the tag name. 144: * @param attributes the attributes. 145: * @param close controls whether the tag is closed. 146: * @throws java.io.IOException if there is an I/O problem. 147: */ 148: public void writeTag(final String name, final AttributeList attributes, 149: final boolean close) throws IOException { 150: writeTag(this.writer, name, attributes, close); 151: } 152: 153: /** 154: * Writes an opening XML tag along with a list of attribute/value pairs. 155: * 156: * @param name the tag name. 157: * @param attributes the attributes. 158: * @param close controls whether the tag is closed. 159: * @throws java.io.IOException if there is an I/O problem. 160: * @deprecated use the attribute list instead ... 161: */ 162: public void writeTag(final String name, final Properties attributes, 163: final boolean close) throws IOException { 164: writeTag(this.writer, name, attributes, close); 165: } 166: 167: /** 168: * Writes some text to the character stream. 169: * 170: * @param text the text. 171: * @throws IOException if there is a problem writing to the character 172: * stream. 173: */ 174: public void writeText(final String text) throws IOException { 175: this.writer.write(text); 176: } 177: 178: /** 179: * Closes the underlying character stream. 180: * 181: * @throws IOException if there is a problem closing the character stream. 182: */ 183: public void close() throws IOException { 184: this.writer.close(); 185: } 186: 187: }