diff options
author | Atsushi Eno <atsushieno@gmail.com> | 2004-09-08 12:41:30 +0400 |
---|---|---|
committer | Atsushi Eno <atsushieno@gmail.com> | 2004-09-08 12:41:30 +0400 |
commit | 616dba98f584091595cae89bdc792acf018bfddd (patch) | |
tree | 74c05fb3b931365988f8786d5e78f4631c38766e /mcs/class/System.XML/System.Xml/XmlTextWriter.cs | |
parent | 5f1cf31a6436afc15cc6325b4cb3f5cd3a6b7d12 (diff) |
2004-09-08 Atsushi Enomoto <atsushi@ximian.com>
* XmlWriter.cs, XmlTextWriter.cs, XmlWriterSettings.cs :
Implemented CheckCharacters and CloseOutput support.
svn path=/trunk/mcs/; revision=33563
Diffstat (limited to 'mcs/class/System.XML/System.Xml/XmlTextWriter.cs')
-rw-r--r-- | mcs/class/System.XML/System.Xml/XmlTextWriter.cs | 25 |
1 files changed, 18 insertions, 7 deletions
diff --git a/mcs/class/System.XML/System.Xml/XmlTextWriter.cs b/mcs/class/System.XML/System.Xml/XmlTextWriter.cs index 49d2ea29104..12ff0fe6387 100644 --- a/mcs/class/System.XML/System.Xml/XmlTextWriter.cs +++ b/mcs/class/System.XML/System.Xml/XmlTextWriter.cs @@ -37,7 +37,7 @@ using System.Text; namespace System.Xml { - [MonoTODO ("CheckCharacters; NormalizeNewLines")] + [MonoTODO ("NormalizeNewLines")] public class XmlTextWriter : XmlWriter { #region Fields @@ -81,6 +81,7 @@ namespace System.Xml bool shouldCheckElementXmlns; // XmlWriterSettings support + bool checkCharacters; bool closeOutput; bool newLineOnAttributes; string newLineChars; @@ -173,6 +174,11 @@ openElements [openElementCount - 1]).IndentingOverriden; } #if NET_2_0 + internal bool CheckCharacters { + get { return checkCharacters; } + set { checkCharacters = value; } + } + internal bool CloseOutput { // get { return closeOutput; } set { closeOutput = value; } @@ -360,8 +366,10 @@ openElements [openElementCount - 1]).IndentingOverriden; { CloseOpenAttributeAndElements (); - if (closeOutput) - w.Close(); + w.Flush (); + if (closeOutput) { + w.Close (); + } ws = WriteState.Closed; openWriter = false; } @@ -964,6 +972,8 @@ openElements [openElementCount - 1]).IndentingOverriden; pos = 6; break; default: if (XmlChar.IsInvalid (source [i])) { + if (checkCharacters) + throw new ArgumentException (String.Format ("Character hexadecimal value {0:4x} is invalid.", (int) source [i])); invalid = source [i]; pos = -1; break; @@ -976,10 +986,11 @@ openElements [openElementCount - 1]).IndentingOverriden; cachedStringBuilder.Append (source.Substring (start, i - start)); if (pos < 0) { cachedStringBuilder.Append ("&#x"); - if (invalid < (char) 255) - cachedStringBuilder.Append (((int) invalid).ToString ("X02", CultureInfo.InvariantCulture)); - else - cachedStringBuilder.Append (((int) invalid).ToString ("X04", CultureInfo.InvariantCulture)); +// if (invalid < (char) 255) +// cachedStringBuilder.Append (((int) invalid).ToString ("X02", CultureInfo.InvariantCulture)); +// else +// cachedStringBuilder.Append (((int) invalid).ToString ("X04", CultureInfo.InvariantCulture)); + cachedStringBuilder.Append (((int) invalid).ToString ("X", CultureInfo.InvariantCulture)); cachedStringBuilder.Append (";"); } else |