diff options
author | Atsushi Eno <atsushieno@gmail.com> | 2004-08-26 18:53:02 +0400 |
---|---|---|
committer | Atsushi Eno <atsushieno@gmail.com> | 2004-08-26 18:53:02 +0400 |
commit | c0395b1772387790804f1c77288775aedc6be498 (patch) | |
tree | 644b36fb1d2bd209dff57531414f83c2cf7f2341 /mcs | |
parent | 5271189627467954a696fec5012f2d78cedd0e21 (diff) |
2004-08-26 Atsushi Enomoto <atsushi@ximian.com>
* XmlTextWriter.cs : In CheckState(), don't create indentation string
at every time. WriteIndent() now handles the indentation without
recomputation.
svn path=/branches/mono-1-0/mcs/; revision=32886
Diffstat (limited to 'mcs')
-rw-r--r-- | mcs/class/System.XML/System.Xml/ChangeLog | 6 | ||||
-rw-r--r-- | mcs/class/System.XML/System.Xml/XmlTextWriter.cs | 27 |
2 files changed, 21 insertions, 12 deletions
diff --git a/mcs/class/System.XML/System.Xml/ChangeLog b/mcs/class/System.XML/System.Xml/ChangeLog index c5ea3b2d6f7..5a2ddc966e5 100644 --- a/mcs/class/System.XML/System.Xml/ChangeLog +++ b/mcs/class/System.XML/System.Xml/ChangeLog @@ -1,3 +1,9 @@ +2004-08-26 Atsushi Enomoto <atsushi@ximian.com> + + * XmlTextWriter.cs : In CheckState(), don't create indentation string + at every time. WriteIndent() now handles the indentation without + recomputation. + 2004-08-21 Atsushi Enomoto <atsushi@ximian.com> * XmlElement.cs : set_InnerText was removing children incompletely. diff --git a/mcs/class/System.XML/System.Xml/XmlTextWriter.cs b/mcs/class/System.XML/System.Xml/XmlTextWriter.cs index af19e18dc6b..8e10329bf68 100644 --- a/mcs/class/System.XML/System.Xml/XmlTextWriter.cs +++ b/mcs/class/System.XML/System.Xml/XmlTextWriter.cs @@ -277,13 +277,9 @@ openElements [openElementCount - 1]).IndentingOverriden; } if ((documentStarted == true) && (formatting == Formatting.Indented) && (!IndentingOverriden)) { indentFormatting = w.NewLine; - if (indentLevel > 0) { - for (int i = 0; i < indentLevel; i++) - indentFormatting += indentChars; - } } else - indentFormatting = ""; + indentFormatting = null; documentStarted = true; } @@ -341,9 +337,7 @@ openElements [openElementCount - 1]).IndentingOverriden; private void UpdateIndentChars () { - indentChars = ""; - for (int i = 0; i < indentation; i++) - indentChars += indentChar; + indentChars = new string (indentChar, indentation); } public override void WriteBase64 (byte[] buffer, int index, int count) @@ -535,6 +529,15 @@ openElements [openElementCount - 1]).IndentingOverriden; WriteEndElementInternal (false); } + private void WriteIndent () + { + if (indentFormatting == null) + return; + w.Write (w.NewLine); + for (int i = 0; i < indentLevel; i++) + w.Write (indentChars); + } + private void WriteEndElementInternal (bool fullEndElement) { if (openElementCount == 0) @@ -553,7 +556,7 @@ openElements [openElementCount - 1]).IndentingOverriden; if (fullEndElement) { w.Write ('>'); if (!ParentIndentingOverriden) - w.Write (indentFormatting); + WriteIndent (); w.Write ("</"); XmlTextWriterOpenElement el = (XmlTextWriterOpenElement) openElements [openElementCount - 1]; if (el.Prefix != String.Empty) { @@ -568,7 +571,7 @@ openElements [openElementCount - 1]).IndentingOverriden; openElementCount--; openStartElement = false; } else { - w.Write (indentFormatting); + WriteIndent (); w.Write ("</"); XmlTextWriterOpenElement el = (XmlTextWriterOpenElement) openElements [openElementCount - 1]; openElementCount--; @@ -626,7 +629,7 @@ openElements [openElementCount - 1]).IndentingOverriden; CheckState (); CloseStartElement (); - w.Write (indentFormatting); + WriteIndent (); w.Write ("<?"); w.Write (name); w.Write (' '); @@ -834,7 +837,7 @@ openElements [openElementCount - 1]).IndentingOverriden; if (prefix == null) prefix = String.Empty; - w.Write (indentFormatting); + WriteIndent (); w.Write ('<'); if (prefix != String.Empty) { w.Write (prefix); |