Author: atsushi
Date: 2006-02-21 15:59:25 -0500 (Tue, 21 Feb 2006)
New Revision: 57108

Modified:
   trunk/mcs/class/System.XML/System.Xml/ChangeLog
   trunk/mcs/class/System.XML/System.Xml/XmlNode.cs
   trunk/mcs/class/System.XML/System.Xml/XmlTextWriter2.cs
Log:
2006-02-21  Atsushi Enomoto <[EMAIL PROTECTED]>

        * XmlTextWriter2.cs : (WriteStartAtribute) more == removal.
        * XmlNode.cs : (get_InnerText) reduce extra StringBuilder creation.



Modified: trunk/mcs/class/System.XML/System.Xml/ChangeLog
===================================================================
--- trunk/mcs/class/System.XML/System.Xml/ChangeLog     2006-02-21 20:57:33 UTC 
(rev 57107)
+++ trunk/mcs/class/System.XML/System.Xml/ChangeLog     2006-02-21 20:59:25 UTC 
(rev 57108)
@@ -1,5 +1,10 @@
 2006-02-21  Atsushi Enomoto <[EMAIL PROTECTED]>
 
+       * XmlTextWriter2.cs : (WriteStartAtribute) more == removal.
+       * XmlNode.cs : (get_InnerText) reduce extra StringBuilder creation.
+
+2006-02-21  Atsushi Enomoto <[EMAIL PROTECTED]>
+
        * XmlTextWriter2.cs : (WriteStartAttribute) reduced string == string.
 
 2006-02-21  Atsushi Enomoto <[EMAIL PROTECTED]>

Modified: trunk/mcs/class/System.XML/System.Xml/XmlNode.cs
===================================================================
--- trunk/mcs/class/System.XML/System.Xml/XmlNode.cs    2006-02-21 20:57:33 UTC 
(rev 57107)
+++ trunk/mcs/class/System.XML/System.Xml/XmlNode.cs    2006-02-21 20:59:25 UTC 
(rev 57108)
@@ -142,15 +142,15 @@
                                if (FirstChild == LastChild)
                                        return FirstChild.InnerText;
 
-                               StringBuilder builder = new StringBuilder ();
-                               AppendChildValues (builder);
-                               return builder.ToString ();
+                               StringBuilder builder = null;
+                               AppendChildValues (ref builder);
+                               return builder == null ? String.Empty : 
builder.ToString ();
                        }
 
                        set { throw new InvalidOperationException ("This node 
is read only. Cannot be modified."); }
                }
 
-               private void AppendChildValues (StringBuilder builder)
+               private void AppendChildValues (ref StringBuilder builder)
                {
                        XmlNode node = FirstChild;
 
@@ -160,10 +160,12 @@
                                case XmlNodeType.CDATA:
                                case XmlNodeType.SignificantWhitespace:
                                case XmlNodeType.Whitespace:
+                                       if (builder == null)
+                                               builder = new StringBuilder ();
                                        builder.Append (node.Value);
                                        break;
                                }
-                               node.AppendChildValues (builder);
+                               node.AppendChildValues (ref builder);
                                node = node.NextSibling;
                        }
                }

Modified: trunk/mcs/class/System.XML/System.Xml/XmlTextWriter2.cs
===================================================================
--- trunk/mcs/class/System.XML/System.Xml/XmlTextWriter2.cs     2006-02-21 
20:57:33 UTC (rev 57107)
+++ trunk/mcs/class/System.XML/System.Xml/XmlTextWriter2.cs     2006-02-21 
20:59:25 UTC (rev 57108)
@@ -779,10 +779,15 @@
                                prefix = String.Empty;
 
                        // For xmlns URI, prefix is forced to be "xmlns"
-                       if (prefix.Length == 0 && namespaceUri == 
XmlnsNamespace && localName != "xmlns")
-                               prefix = "xmlns";
-                       bool isNSDecl = (prefix == "xmlns" ||
-                               localName == "xmlns" && prefix == String.Empty);
+                       bool isNSDecl = false;
+                       if (namespaceUri == XmlnsNamespace) {
+                               isNSDecl = true;
+                               if (prefix.Length == 0 && localName != "xmlns")
+                                       prefix = "xmlns";
+                       }
+                       else
+                               isNSDecl = (prefix == "xmlns" ||
+                                       localName == "xmlns" && prefix.Length 
== 0);
 
                        if (namespaces) {
                                // MS implementation is pretty hacky here. 
@@ -791,7 +796,7 @@
                                if (prefix == "xml")
                                        namespaceUri = XmlNamespace;
                                // infer namespace URI.
-                               else if (namespaceUri == null) {
+                               else if ((object) namespaceUri == null) {
                                        if (isNSDecl)
                                                namespaceUri = XmlnsNamespace;
                                        else
@@ -812,8 +817,7 @@
                                        throw ArgumentError ("Namespace URI 
must not be null when prefix is not an empty string.");
 
                                // Dive into extremely complex procedure.
-                               if (!isNSDecl && namespaceUri.Length > 0 &&
-                                   namespaceUri != XmlNamespace)
+                               if (!isNSDecl && namespaceUri.Length > 0)
                                        prefix = DetermineAttributePrefix (
                                                prefix, localName, 
namespaceUri);
                        }
@@ -838,7 +842,7 @@
                                        preserver.GetStringBuilder ().Length = 
0;
                                writer = preserver;
 
-                               if (prefix == "xml") {
+                               if (!isNSDecl) {
                                        is_preserved_xmlns = false;
                                        preserved_name = localName;
                                } else {

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to