Skip to content

Commit

Permalink
Remove most of string.Trim() usages in System.Private.Xml solution. (d…
Browse files Browse the repository at this point in the history
…otnet#75452)

* Remove most of string.Trim() usages in Xml solution.

* Address feedback

* Add checks if input string is null

Co-authored-by: Traian Zaprianov <Traian.Zaprianov@docuware.com>
  • Loading branch information
TrayanZapryanov and TrayanZapryanov authored Sep 26, 2022
1 parent 19c5d17 commit b34abe1
Show file tree
Hide file tree
Showing 8 changed files with 149 additions and 144 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5119,7 +5119,7 @@ private void OnXmlReservedAttribute(NodeData attr)
PushXmlContext();
}

switch (XmlConvert.TrimString(attr.StringValue))
switch (attr.StringValue.AsSpan().Trim(XmlConvert.WhitespaceChars))
{
case "preserve":
_xmlContext.xmlSpace = XmlSpace.Preserve;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1758,18 +1758,16 @@ private void HandleSpecialAttribute()
break;
case SpecialAttr.XmlSpace:
// validate XmlSpace attribute
value = XmlConvert.TrimString(value);
if (value == "default")
switch (value.AsSpan().Trim(XmlConvert.WhitespaceChars))
{
_stack[_top].xmlSpace = XmlSpace.Default;
}
else if (value == "preserve")
{
_stack[_top].xmlSpace = XmlSpace.Preserve;
}
else
{
throw new ArgumentException(SR.Format(SR.Xml_InvalidXmlSpace, value));
case "default":
_stack[_top].xmlSpace = XmlSpace.Default;
break;
case "preserve":
_stack[_top].xmlSpace = XmlSpace.Preserve;
break;
default:
throw new ArgumentException(SR.Format(SR.Xml_InvalidXmlSpace, value));
}
break;
case SpecialAttr.XmlNs:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -403,10 +403,11 @@ internal void Trim()

// trim the string in StringBuilder
string valBefore = _stringValue.ToString();
string valAfter = XmlConvert.TrimString(valBefore);
ReadOnlySpan<char> valAfter = valBefore.AsSpan().Trim(XmlConvert.WhitespaceChars);
if (valBefore != valAfter)
{
_stringValue = new StringBuilder(valAfter);
_stringValue = new StringBuilder();
_stringValue.Append(valAfter);
}

// trim the beginning of the recorded writer events
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1349,7 +1349,7 @@ internal virtual XmlSpace XmlSpace
elem = node as XmlElement;
if (elem != null && elem.HasAttribute("xml:space"))
{
switch (XmlConvert.TrimString(elem.GetAttribute("xml:space")))
switch (elem.GetAttribute("xml:space").AsSpan().Trim(XmlConvert.WhitespaceChars))
{
case "default":
return XmlSpace.Default;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -588,7 +588,7 @@ protected static byte[] StringToHexBinary(string value)
{
try
{
return XmlConvert.FromBinHexString(XmlConvert.TrimString(value), false);
return XmlConvert.FromBinHexString(value.AsSpan().Trim(XmlConvert.WhitespaceChars), false);
}
catch (XmlException e)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -437,8 +437,7 @@ internal static char ToChar(string value)
internal static byte[]? ToByteArrayHex(string? value)
{
if (value == null) return null;
value = value.Trim();
return XmlConvert.FromBinHexString(value);
return XmlConvert.FromBinHexString(value.AsSpan().Trim(), true);
}

internal static long ToEnum(string val, Hashtable vals, string? typeName, bool validate)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -264,7 +264,7 @@ public override XmlSpace XmlSpace
{
if (tempNav.MoveToAttribute(XPathNavigatorReader.space, XmlReservedNs.NsXml))
{
switch (XmlConvert.TrimString(tempNav.Value))
switch (tempNav.Value.AsSpan().Trim(XmlConvert.WhitespaceChars))
{
case "default":
return XmlSpace.Default;
Expand Down
Loading

0 comments on commit b34abe1

Please sign in to comment.