2002-07-26 Tim Coleman <tim@timcoleman.com>
[mono.git] / mcs / class / System.XML / System.Xml / XmlWriter.cs
1 //
2 // System.Xml.XmlTextWriter
3 //
4 // Author:
5 //   Kral Ferch <kral_ferch@hotmail.com>
6 //
7 // (C) 2002 Kral Ferch
8 //
9
10 using System;
11
12 namespace System.Xml
13 {
14         public abstract class XmlWriter
15         {
16                 #region Fields
17
18                 protected WriteState ws = WriteState.Start;
19                 protected XmlNamespaceManager namespaceManager = new XmlNamespaceManager (new NameTable ());
20
21                 #endregion
22
23                 #region Constructors
24
25                 protected XmlWriter () { }
26
27                 #endregion
28
29                 #region Properties
30
31                 public abstract WriteState WriteState { get; }
32                 
33                 public abstract string XmlLang { get; }
34
35                 public abstract XmlSpace XmlSpace { get; }
36
37                 #endregion
38
39                 #region Methods
40
41                 public abstract void Close ();
42
43                 public abstract void Flush ();
44
45                 public abstract string LookupPrefix (string ns);
46
47                 [MonoTODO]
48                 public virtual void WriteAttributes (XmlReader reader, bool defattr)
49                 {
50                         throw new NotImplementedException ();
51                 }
52
53                 public void WriteAttributeString (string localName, string value)
54                 {
55                         WriteAttributeString ("", localName, "", value);
56                 }
57
58                 public void WriteAttributeString (string localName, string ns, string value)
59                 {
60                         WriteAttributeString ("", localName, ns, value);
61                 }
62
63                 public void WriteAttributeString (string prefix, string localName, string ns, string value)
64                 {
65                         if ((prefix == "xmlns") || (localName == "xmlns"))
66                                 ns = value;
67                         
68                         WriteStartAttribute (prefix, localName, ns);
69                         WriteString (value);
70                         WriteEndAttribute ();
71
72                         if ((prefix == "xmlns") || (localName == "xmlns")) 
73                         {
74                                 if (prefix == "xmlns")
75                                         namespaceManager.AddNamespace (localName, ns);
76                                 else
77                                         namespaceManager.AddNamespace ("", ns);
78                         }
79                 }
80
81                 public abstract void WriteBase64 (byte[] buffer, int index, int count);
82
83                 public abstract void WriteBinHex (byte[] buffer, int index, int count);
84
85                 public abstract void WriteCData (string text);
86
87                 public abstract void WriteCharEntity (char ch);
88
89                 public abstract void WriteChars (char[] buffer, int index, int count);
90
91                 public abstract void WriteComment (string text);
92
93                 public abstract void WriteDocType (string name, string pubid, string sysid, string subset);
94
95                 public void WriteElementString (string localName, string value)
96                 {
97                         WriteStartElement(localName);
98                         WriteString(value);
99                         WriteEndElement();
100                 }
101
102                 public void WriteElementString (string localName, string ns, string value)
103                 {
104                         WriteStartElement(localName, ns);
105                         WriteString(value);
106                         WriteEndElement();
107                 }
108
109                 public abstract void WriteEndAttribute ();
110
111                 public abstract void WriteEndDocument ();
112
113                 public abstract void WriteEndElement ();
114
115                 public abstract void WriteEntityRef (string name);
116
117                 public abstract void WriteFullEndElement ();
118
119                 public abstract void WriteName (string name);
120
121                 public abstract void WriteNmToken (string name);
122
123                 [MonoTODO]
124                 public virtual void WriteNode (XmlReader reader, bool defattr)
125                 {
126                         throw new NotImplementedException ();
127                 }
128
129                 public abstract void WriteProcessingInstruction (string name, string text);
130
131                 public abstract void WriteQualifiedName (string localName, string ns);
132
133                 public abstract void WriteRaw (string data);
134
135                 public abstract void WriteRaw (char[] buffer, int index, int count);
136
137                 public void WriteStartAttribute (string localName, string ns)
138                 {
139                         WriteStartAttribute ("", localName, ns);
140                 }
141
142                 public abstract void WriteStartAttribute (string prefix, string localName, string ns);
143
144                 public abstract void WriteStartDocument ();
145
146                 public abstract void WriteStartDocument (bool standalone);
147
148                 public void WriteStartElement (string localName)
149                 {
150                         WriteStartElementInternal (null, localName, null);
151                 }
152
153                 public void WriteStartElement (string localName, string ns)
154                 {
155                         WriteStartElement (null, localName, ns);
156                 }
157
158                 public abstract void WriteStartElement (string prefix, string localName, string ns);
159
160                 protected abstract void WriteStartElementInternal (string prefix, string localName, string ns);
161
162                 public abstract void WriteString (string text);
163
164                 public abstract void WriteSurrogateCharEntity (char lowChar, char highChar);
165
166                 public abstract void WriteWhitespace (string ws);
167
168                 #endregion
169         }
170 }