View Javadoc

1   /* ***** BEGIN LICENSE BLOCK *****
2    * Version: MPL 1.1/GPL 2.0/LGPL 2.1
3    *
4    * The contents of this file are subject to the Mozilla Public License Version
5    * 1.1 (the "License"); you may not use this file except in compliance with
6    * the License. You may obtain a copy of the License at
7    * http://www.mozilla.org/MPL/
8    *
9    * Software distributed under the License is distributed on an "AS IS" basis,
10   * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
11   * for the specific language governing rights and limitations under the
12   * License.
13   *
14   * The Original Code is "SMS Library for the Java platform".
15   *
16   * The Initial Developer of the Original Code is Markus Eriksson.
17   * Portions created by the Initial Developer are Copyright (C) 2002
18   * the Initial Developer. All Rights Reserved.
19   *
20   * Contributor(s):
21   *
22   * Alternatively, the contents of this file may be used under the terms of
23   * either the GNU General Public License Version 2 or later (the "GPL"), or
24   * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
25   * in which case the provisions of the GPL or the LGPL are applicable instead
26   * of those above. If you wish to allow use of your version of this file only
27   * under the terms of either the GPL or the LGPL, and not to allow others to
28   * use your version of this file under the terms of the MPL, indicate your
29   * decision by deleting the provisions above and replace them with the notice
30   * and other provisions required by the GPL or the LGPL. If you do not delete
31   * the provisions above, a recipient may use your version of this file under
32   * the terms of any one of the MPL, the GPL or the LGPL.
33   *
34   * ***** END LICENSE BLOCK ***** */
35  package org.marre.xml;
36  
37  import java.io.IOException;
38  
39  /***
40   * Simple interface to write XML documents.
41   *
42   * Mainly created to make it simple to create both XML and WBXML documents.
43   * 
44   * @author Markus Eriksson
45   * @version $Id: XmlWriter.java,v 1.7 2004/12/07 20:03:21 c95men Exp $
46   */
47  public interface XmlWriter
48  {
49      /***
50       * Sets a public ID doctype.
51       * 
52       * Must be set before any of the add or flush methods.
53       * 
54       * @param publicID XML public ID
55       */
56      void setDoctype(String publicID);
57  
58      /***
59       * Sets a system URI doctype.
60       * 
61       * Must be set before any of the add or flush methods.
62       * 
63       * @param name Name
64       * @param systemURI System URI
65       */
66      void setDoctype(String name, String systemURI);
67  
68      /***
69       * Sets a public ID doctype.
70       * 
71       * Must be set before any of the add or flush methods.
72       * 
73       * @param name Name
74       * @param publicID PublicID
75       * @param publicURI PublicURI
76       */
77      void setDoctype(String name, String publicID, String publicURI);
78  
79      /***
80       * Adds a start element tag.
81       * 
82       * Ex: <TAG>
83       * 
84       * @param tag tag
85       * @throws IOException io error
86       */
87      void addStartElement(String tag) throws IOException;
88  
89      /***
90       * Adds a start element tag with attributes.
91       * 
92       * Ex: <TAG attrib="value">
93       * 
94       * @param tag Tag
95       * @param attribs Attributes
96       * @throws IOException io error
97       */
98      void addStartElement(String tag, XmlAttribute[] attribs) throws IOException;
99  
100     /***
101      * Adds an empty element tag.
102      * 
103      * Ex: <TAG/>
104      * 
105      * @param tag Tag
106      * @throws IOException io error
107      */
108     void addEmptyElement(String tag) throws IOException;
109 
110     /***
111      * Adds an empty start element tag with attributes.
112      * 
113      * Ex: <TAG attrib="value"/>
114      * 
115      * @param tag Tag
116      * @param attribs Attributes
117      * @throws IOException io error
118      */
119     void addEmptyElement(String tag, XmlAttribute[] attribs) throws IOException;
120 
121     /***
122      * Adds an end element tag.
123      * 
124      * Ex </TAG>
125      * 
126      * @throws IOException io error
127      */
128     void addEndElement() throws IOException;
129 
130     /***
131      * Adds a segment of text.
132      * 
133      * @param ch The chars to add
134      * @param start Start offset of the ch array.
135      * @param length Number of chars to add
136      * @throws IOException io error
137      */
138     void addCharacters(char[] ch, int start, int length) throws IOException;
139 
140     /***
141      * Adds a segment of text.
142      * 
143      * @param str Text to add
144      * @throws IOException io error
145      */
146     void addCharacters(String str) throws IOException;
147     
148     /***
149      * Flushes the xml document.
150      * 
151      * Must be called to be sure that the document is correctly created.
152      * 
153      * @throws IOException io error
154      */
155     void flush() throws IOException;
156 }