Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'mcs/class/System.XML/System.Xml/XmlTextWriter.cs')
-rw-r--r--mcs/class/System.XML/System.Xml/XmlTextWriter.cs644
1 files changed, 0 insertions, 644 deletions
diff --git a/mcs/class/System.XML/System.Xml/XmlTextWriter.cs b/mcs/class/System.XML/System.Xml/XmlTextWriter.cs
deleted file mode 100644
index a598695b306..00000000000
--- a/mcs/class/System.XML/System.Xml/XmlTextWriter.cs
+++ /dev/null
@@ -1,644 +0,0 @@
-//
-// System.Xml.XmlTextWriter
-//
-// Author:
-// Kral Ferch <kral_ferch@hotmail.com>
-//
-// (C) 2002 Kral Ferch
-//
-
-using System;
-using System.Collections;
-using System.IO;
-using System.Text;
-
-namespace System.Xml
-{
- public class XmlTextWriter : XmlWriter
- {
- #region Fields
-
- protected TextWriter w;
- protected bool nullEncoding = false;
- protected bool openWriter = true;
- protected bool openStartElement = false;
- protected bool openStartAttribute = false;
- protected bool documentStarted = false;
- private bool namespaces = true;
- protected bool openAttribute = false;
- protected bool attributeWrittenForElement = false;
- protected Stack openElements = new Stack ();
- private Formatting formatting = Formatting.None;
- private int indentation = 2;
- private char indentChar = ' ';
- protected string indentChars = " ";
- private char quoteChar = '\"';
- protected int indentLevel = 0;
- protected string indentFormatting;
- protected Stream baseStream = null;
- protected string xmlLang = null;
- protected XmlSpace xmlSpace = XmlSpace.None;
- protected bool openXmlLang = false;
- protected bool openXmlSpace = false;
-
- #endregion
-
- #region Constructors
-
- public XmlTextWriter (TextWriter w) : base ()
- {
- this.w = w;
-
- try {
- baseStream = ((StreamWriter)w).BaseStream;
- }
- catch (Exception) { }
- }
-
- public XmlTextWriter (Stream w, Encoding encoding) : base ()
- {
- if (encoding == null) {
- nullEncoding = true;
- encoding = new UTF8Encoding ();
- }
-
- this.w = new StreamWriter(w, encoding);
- baseStream = w;
- }
-
- public XmlTextWriter (string filename, Encoding encoding) : base ()
- {
- this.w = new StreamWriter(filename, false, encoding);
- baseStream = ((StreamWriter)w).BaseStream;
- }
-
- #endregion
-
- #region Properties
-
- public Stream BaseStream {
- get { return baseStream; }
- }
-
-
- public Formatting Formatting {
- get { return formatting; }
- set { formatting = value; }
- }
-
- public bool IndentingOverriden
- {
- get {
- if (openElements.Count == 0)
- return false;
- else
- return (((XmlTextWriterOpenElement)openElements.Peek()).IndentingOverriden);
- }
- set {
- if (openElements.Count > 0)
- ((XmlTextWriterOpenElement)openElements.Peek()).IndentingOverriden = value;
- }
- }
-
- public int Indentation {
- get { return indentation; }
- set {
- indentation = value;
- UpdateIndentChars ();
- }
- }
-
- public char IndentChar {
- get { return indentChar; }
- set {
- indentChar = value;
- UpdateIndentChars ();
- }
- }
-
- public bool Namespaces {
- get { return namespaces; }
- set {
- if (ws != WriteState.Start)
- throw new InvalidOperationException ("NotInWriteState.");
-
- namespaces = value;
- }
- }
-
- public char QuoteChar {
- get { return quoteChar; }
- set {
- if ((value != '\'') && (value != '\"'))
- throw new ArgumentException ("This is an invalid XML attribute quote character. Valid attribute quote characters are ' and \".");
-
- quoteChar = value;
- }
- }
-
- public override WriteState WriteState {
- get { return ws; }
- }
-
- public override string XmlLang {
- get {
- string xmlLang = null;
- int i;
-
- for (i = 0; i < openElements.Count; i++)
- {
- xmlLang = ((XmlTextWriterOpenElement)openElements.ToArray().GetValue(i)).XmlLang;
- if (xmlLang != null)
- break;
- }
-
- return xmlLang;
- }
- }
-
- public override XmlSpace XmlSpace {
- get {
- XmlSpace xmlSpace = XmlSpace.None;
- int i;
-
- for (i = 0; i < openElements.Count; i++)
- {
- xmlSpace = ((XmlTextWriterOpenElement)openElements.ToArray().GetValue(i)).XmlSpace;
- if (xmlSpace != XmlSpace.None)
- break;
- }
-
- return xmlSpace;
- }
- }
-
- #endregion
-
- #region Methods
-
- private void CheckState ()
- {
- if (!openWriter) {
- throw new InvalidOperationException ("The Writer is closed.");
- }
-
- if ((documentStarted == true) && (formatting == Formatting.Indented) && (!IndentingOverriden)) {
- indentFormatting = "\r\n";
- if (indentLevel > 0) {
- for (int i = 0; i < indentLevel; i++)
- indentFormatting += indentChars;
- }
- }
- else
- indentFormatting = "";
-
- documentStarted = true;
- }
-
- public override void Close ()
- {
- CloseOpenAttributeAndElements ();
-
- w.Close();
- ws = WriteState.Closed;
- openWriter = false;
- }
-
- private void CloseOpenAttributeAndElements ()
- {
- if (openAttribute)
- WriteEndAttribute ();
-
- while (openElements.Count > 0) {
- WriteEndElement();
- }
- }
-
- private void CloseStartElement ()
- {
- if (openStartElement) {
- w.Write(">");
- ws = WriteState.Content;
- openStartElement = false;
- attributeWrittenForElement = false;
- }
- }
-
- public override void Flush ()
- {
- w.Flush ();
- }
-
- public override string LookupPrefix (string ns)
- {
- string prefix = namespaceManager.LookupPrefix (ns);
-
- if (prefix == String.Empty)
- prefix = null;
-
- return prefix;
- }
-
- private void UpdateIndentChars ()
- {
- indentChars = "";
- for (int i = 0; i < indentation; i++)
- indentChars += indentChar;
- }
-
- public override void WriteBase64 (byte[] buffer, int index, int count)
- {
- w.Write (Convert.ToBase64String (buffer, index, count));
- }
-
- [MonoTODO]
- public override void WriteBinHex (byte[] buffer, int index, int count)
- {
- throw new NotImplementedException ();
- }
-
- public override void WriteCData (string text)
- {
- if (text.IndexOf("]]>") > 0)
- throw new ArgumentException ();
-
- CheckState ();
- CloseStartElement ();
-
- w.Write("<![CDATA[{0}]]>", text);
- }
-
- public override void WriteCharEntity (char ch)
- {
- Int16 intCh = (Int16)ch;
-
- // Make sure the character is not in the surrogate pair
- // character range, 0xd800- 0xdfff
- if ((intCh >= -10240) && (intCh <= -8193))
- throw new ArgumentException ("Surrogate Pair is invalid.");
-
- w.Write("&#x{0:X};", intCh);
- }
-
- [MonoTODO]
- public override void WriteChars (char[] buffer, int index, int count)
- {
- throw new NotImplementedException ();
- }
-
- public override void WriteComment (string text)
- {
- if ((text.EndsWith("-")) || (text.IndexOf("-->") > 0)) {
- throw new ArgumentException ();
- }
-
- CheckState ();
- CloseStartElement ();
-
- w.Write ("<!--{0}-->", text);
- }
-
- [MonoTODO]
- public override void WriteDocType (string name, string pubid, string sysid, string subset)
- {
- throw new NotImplementedException ();
- }
-
- public override void WriteEndAttribute ()
- {
- if (!openAttribute)
- throw new InvalidOperationException("Token EndAttribute in state Start would result in an invalid XML document.");
-
- CheckState ();
-
- if (openXmlLang) {
- w.Write (xmlLang);
- openXmlLang = false;
- ((XmlTextWriterOpenElement)openElements.Peek()).XmlLang = xmlLang;
- }
-
- if (openXmlSpace)
- {
- w.Write (xmlSpace.ToString ().ToLower ());
- openXmlSpace = false;
- ((XmlTextWriterOpenElement)openElements.Peek()).XmlSpace = xmlSpace;
- }
-
- w.Write ("{0}", quoteChar);
-
- openAttribute = false;
- }
-
- public override void WriteEndDocument ()
- {
- if ((ws == WriteState.Start) || (ws == WriteState.Prolog))
- throw new ArgumentException ("This document does not have a root element.");
-
- CloseOpenAttributeAndElements ();
-
- ws = WriteState.Start;
- }
-
- public override void WriteEndElement ()
- {
- WriteEndElementInternal (false);
- }
-
- private void WriteEndElementInternal (bool fullEndElement)
- {
- if (openElements.Count == 0)
- throw new InvalidOperationException("There was no XML start tag open.");
-
- indentLevel--;
-
- CheckState ();
-
- if (openStartElement) {
- if (openAttribute)
- WriteEndAttribute ();
-
- if (fullEndElement)
- w.Write ("></{0}>", ((XmlTextWriterOpenElement)openElements.Peek ()).Name);
- else
- w.Write (" />");
-
- openElements.Pop ();
- openStartElement = false;
- } else {
- w.Write ("{0}</{1}>", indentFormatting, openElements.Pop ());
- }
-
- namespaceManager.PopScope();
- }
-
- [MonoTODO]
- public override void WriteEntityRef (string name)
- {
- throw new NotImplementedException ();
- }
-
- public override void WriteFullEndElement ()
- {
- WriteEndElementInternal (true);
- }
-
- [MonoTODO]
- public override void WriteName (string name)
- {
- throw new NotImplementedException ();
- }
-
- [MonoTODO]
- public override void WriteNmToken (string name)
- {
- throw new NotImplementedException ();
- }
-
- public override void WriteProcessingInstruction (string name, string text)
- {
- if ((name == null) || (name == string.Empty) || (name.IndexOf("?>") > 0) || (text.IndexOf("?>") > 0)) {
- throw new ArgumentException ();
- }
-
- CheckState ();
- CloseStartElement ();
-
- w.Write ("{0}<?{1} {2}?>", indentFormatting, name, text);
- }
-
- [MonoTODO]
- public override void WriteQualifiedName (string localName, string ns)
- {
- throw new NotImplementedException ();
- }
-
- public override void WriteRaw (string data)
- {
- WriteStringInternal (data, false);
- }
-
- [MonoTODO]
- public override void WriteRaw (char[] buffer, int index, int count)
- {
- throw new NotImplementedException ();
- }
-
- public override void WriteStartAttribute (string prefix, string localName, string ns)
- {
- if ((prefix == "xml") && (localName == "lang"))
- openXmlLang = true;
-
- if ((prefix == "xml") && (localName == "space"))
- openXmlSpace = true;
-
- if ((prefix == "xmlns") && (localName == "xmlns"))
- throw new ArgumentException ("Prefixes beginning with \"xml\" (regardless of whether the characters are uppercase, lowercase, or some combination thereof) are reserved for use by XML.");
-
- CheckState ();
-
- if (ws == WriteState.Content)
- throw new InvalidOperationException ("Token StartAttribute in state " + WriteState + " would result in an invalid XML document.");
-
- if (prefix == null)
- prefix = String.Empty;
-
- if (ns == null)
- ns = String.Empty;
-
- string formatPrefix = "";
- string formatSpace = "";
-
- if (ns != String.Empty)
- {
- string existingPrefix = namespaceManager.LookupPrefix (ns);
-
- if (prefix == String.Empty)
- prefix = existingPrefix;
- }
-
- if (prefix != String.Empty)
- {
- formatPrefix = prefix + ":";
- }
-
- if (openStartElement || attributeWrittenForElement)
- formatSpace = " ";
-
- w.Write ("{0}{1}{2}={3}", formatSpace, formatPrefix, localName, quoteChar);
-
- openAttribute = true;
- attributeWrittenForElement = true;
- ws = WriteState.Attribute;
- }
-
- public override void WriteStartDocument ()
- {
- WriteStartDocument ("");
- }
-
- public override void WriteStartDocument (bool standalone)
- {
- string standaloneFormatting;
-
- if (standalone == true)
- standaloneFormatting = String.Format (" standalone={0}yes{0}", quoteChar);
- else
- standaloneFormatting = String.Format (" standalone={0}no{0}", quoteChar);
-
- WriteStartDocument (standaloneFormatting);
- }
-
- private void WriteStartDocument (string standaloneFormatting)
- {
- if (documentStarted == true)
- throw new InvalidOperationException("WriteStartDocument should be the first call.");
-
- CheckState ();
-
- string encodingFormatting = "";
-
- if (!nullEncoding)
- encodingFormatting = String.Format (" encoding={0}{1}{0}", quoteChar, w.Encoding.HeaderName);
-
- w.Write("<?xml version={0}1.0{0}{1}{2}?>", quoteChar, encodingFormatting, standaloneFormatting);
- ws = WriteState.Prolog;
- }
-
- public override void WriteStartElement (string prefix, string localName, string ns)
- {
- if (!Namespaces && (((prefix != null) && (prefix != String.Empty))
- || ((ns != null) && (ns != String.Empty))))
- throw new ArgumentException ("Cannot set the namespace if Namespaces is 'false'.");
-
- WriteStartElementInternal (prefix, localName, ns);
- }
-
- protected override void WriteStartElementInternal (string prefix, string localName, string ns)
- {
- if (prefix == null)
- prefix = String.Empty;
-
- if (ns == null)
- ns = String.Empty;
-
- if ((prefix != String.Empty) && ((ns == null) || (ns == String.Empty)))
- throw new ArgumentException ("Cannot use a prefix with an empty namespace.");
-
- CheckState ();
- CloseStartElement ();
-
- string formatXmlns = "";
- string formatPrefix = "";
-
- if (ns != String.Empty)
- {
- string existingPrefix = namespaceManager.LookupPrefix (ns);
-
- if (prefix == String.Empty)
- prefix = existingPrefix;
-
- if (prefix != existingPrefix)
- formatXmlns = String.Format (" xmlns:{0}={1}{2}{1}", prefix, quoteChar, ns);
- else if (existingPrefix == String.Empty)
- formatXmlns = String.Format (" xmlns={0}{1}{0}", quoteChar, ns);
- }
- else if ((prefix == String.Empty) && (namespaceManager.LookupNamespace(prefix) != String.Empty)) {
- formatXmlns = String.Format (" xmlns={0}{0}", quoteChar);
- }
-
- if (prefix != String.Empty) {
- formatPrefix = prefix + ":";
- }
-
- w.Write ("{0}<{1}{2}{3}", indentFormatting, formatPrefix, localName, formatXmlns);
-
- openElements.Push (new XmlTextWriterOpenElement (formatPrefix + localName));
- ws = WriteState.Element;
- openStartElement = true;
-
- namespaceManager.PushScope ();
- namespaceManager.AddNamespace (prefix, ns);
-
- indentLevel++;
- }
-
- public override void WriteString (string text)
- {
- if (ws == WriteState.Prolog)
- throw new InvalidOperationException ("Token content in state Prolog would result in an invalid XML document.");
-
- WriteStringInternal (text, true);
- }
-
- public void WriteStringInternal (string text, bool entitize)
- {
- if (text == null)
- text = String.Empty;
-
- if (text != String.Empty)
- {
- CheckState ();
-
- if (entitize)
- {
- text = text.Replace ("&", "&amp;");
- text = text.Replace ("<", "&lt;");
- text = text.Replace (">", "&gt;");
-
- if (openAttribute)
- {
- if (quoteChar == '"')
- text = text.Replace ("\"", "&quot;");
- else
- text = text.Replace ("'", "&apos;");
- }
- }
-
- if (!openAttribute)
- CloseStartElement ();
-
- if (!openXmlLang && !openXmlSpace)
- w.Write (text);
- else
- {
- if (openXmlLang)
- xmlLang = text;
- else
- {
- switch (text)
- {
- case "default":
- xmlSpace = XmlSpace.Default;
- break;
- case "preserve":
- xmlSpace = XmlSpace.Preserve;
- break;
- default:
- throw new ArgumentException ("'{0}' is an invalid xml:space value.");
- }
- }
- }
- }
-
- IndentingOverriden = true;
- }
-
- [MonoTODO]
- public override void WriteSurrogateCharEntity (char lowChar, char highChar)
- {
- throw new NotImplementedException ();
- }
-
- public override void WriteWhitespace (string ws)
- {
- foreach (char c in ws) {
- if ((c != ' ') && (c != '\t') && (c != '\r') && (c != '\n'))
- throw new ArgumentException ();
- }
-
- w.Write (ws);
- }
-
- #endregion
- }
-}