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