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:
authorAtsushi Eno <atsushieno@gmail.com>2004-09-08 12:41:30 +0400
committerAtsushi Eno <atsushieno@gmail.com>2004-09-08 12:41:30 +0400
commit616dba98f584091595cae89bdc792acf018bfddd (patch)
tree74c05fb3b931365988f8786d5e78f4631c38766e /mcs/class/System.XML/System.Xml/XmlTextWriter.cs
parent5f1cf31a6436afc15cc6325b4cb3f5cd3a6b7d12 (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.cs25
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