71eb6b16506d67dab84e07a6cb9a666b494bf9d0
[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                           {
67                                 ns = value;
68                                 if (prefix == "xmlns" && namespaceManager.HasNamespace (localName))
69                                         return;
70                                 else if (localName == "xmlns" && namespaceManager.HasNamespace (String.Empty))
71                                         return;
72                           }
73                         
74                         WriteStartAttribute (prefix, localName, ns);
75                         WriteString (value);
76                         WriteEndAttribute ();
77
78                         if ((prefix == "xmlns") || (localName == "xmlns")) 
79                         {
80                                 if (prefix == "xmlns")
81                                         namespaceManager.AddNamespace (localName, ns);
82                                 else
83                                         namespaceManager.AddNamespace ("", ns);
84                         }
85                 }
86
87                 public abstract void WriteBase64 (byte[] buffer, int index, int count);
88
89                 public abstract void WriteBinHex (byte[] buffer, int index, int count);
90
91                 public abstract void WriteCData (string text);
92
93                 public abstract void WriteCharEntity (char ch);
94
95                 public abstract void WriteChars (char[] buffer, int index, int count);
96
97                 public abstract void WriteComment (string text);
98
99                 public abstract void WriteDocType (string name, string pubid, string sysid, string subset);
100
101                 public void WriteElementString (string localName, string value)
102                 {
103                         WriteStartElement(localName);
104                         WriteString(value);
105                         WriteEndElement();
106                 }
107
108                 public void WriteElementString (string localName, string ns, string value)
109                 {
110                         WriteStartElement(localName, ns);
111                         WriteString(value);
112                         WriteEndElement();
113                 }
114
115                 public abstract void WriteEndAttribute ();
116
117                 public abstract void WriteEndDocument ();
118
119                 public abstract void WriteEndElement ();
120
121                 public abstract void WriteEntityRef (string name);
122
123                 public abstract void WriteFullEndElement ();
124
125                 public abstract void WriteName (string name);
126
127                 public abstract void WriteNmToken (string name);
128
129                 [MonoTODO]
130                 public virtual void WriteNode (XmlReader reader, bool defattr)
131                 {
132                         throw new NotImplementedException ();
133                 }
134
135                 public abstract void WriteProcessingInstruction (string name, string text);
136
137                 public abstract void WriteQualifiedName (string localName, string ns);
138
139                 public abstract void WriteRaw (string data);
140
141                 public abstract void WriteRaw (char[] buffer, int index, int count);
142
143                 public void WriteStartAttribute (string localName, string ns)
144                 {
145                         WriteStartAttribute ("", localName, ns);
146                 }
147
148                 public abstract void WriteStartAttribute (string prefix, string localName, string ns);
149
150                 public abstract void WriteStartDocument ();
151
152                 public abstract void WriteStartDocument (bool standalone);
153
154                 public void WriteStartElement (string localName)
155                 {
156                         WriteStartElement (String.Empty, localName, String.Empty);
157                 }
158
159                 public void WriteStartElement (string localName, string ns)
160                 {
161                         WriteStartElement (String.Empty, localName, ns);
162                 }
163
164                 public abstract void WriteStartElement (string prefix, string localName, string ns);
165
166                 public abstract void WriteString (string text);
167
168                 public abstract void WriteSurrogateCharEntity (char lowChar, char highChar);
169
170                 public abstract void WriteWhitespace (string ws);
171
172                 #endregion
173         }
174 }