aboutsummaryrefslogtreecommitdiff
path: root/src/encoding/xml/read.go
diff options
context:
space:
mode:
authorLeigh McCulloch <leighmcc@gmail.com>2017-10-27 07:04:57 +0000
committerIan Lance Taylor <iant@golang.org>2017-11-01 20:39:57 +0000
commit14bc4f5e5fd5a113c97bdf1455b4f7d36a81f54b (patch)
tree4dd177f6a897c563194f81738ead79575792e6e2 /src/encoding/xml/read.go
parent776cdefc072fc916b5f74a7d7fb6e4573a6c8e89 (diff)
downloadgo-14bc4f5e5fd5a113c97bdf1455b4f7d36a81f54b.tar.gz
go-14bc4f5e5fd5a113c97bdf1455b4f7d36a81f54b.zip
encoding/xml: ignore whitespace in values and attrs
Whitespace is ignored in bool values and attrs. It is convenient and relatively safe since whitespace around a bool value is often unimportant. The same logic can be applied to numeric values of types int, uint, and float. Fixes #22146 Change-Id: Ie0462def90304af144b8e2e72d85b644857c27cc Reviewed-on: https://go-review.googlesource.com/73891 Reviewed-by: Sam Whited <sam@samwhited.com> Reviewed-by: Ian Lance Taylor <iant@golang.org> Run-TryBot: Sam Whited <sam@samwhited.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
Diffstat (limited to 'src/encoding/xml/read.go')
-rw-r--r--src/encoding/xml/read.go8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/encoding/xml/read.go b/src/encoding/xml/read.go
index 6709d5aeba..36c7ba6311 100644
--- a/src/encoding/xml/read.go
+++ b/src/encoding/xml/read.go
@@ -113,7 +113,7 @@ import (
// Unmarshal maps an XML element or attribute value to an integer or
// floating-point field by setting the field to the result of
// interpreting the string value in decimal. There is no check for
-// overflow.
+// overflow. Whitespace is trimmed and ignored.
//
// Unmarshal maps an XML element to a Name by recording the element
// name.
@@ -615,7 +615,7 @@ func copyValue(dst reflect.Value, src []byte) (err error) {
dst.SetInt(0)
return nil
}
- itmp, err := strconv.ParseInt(string(src), 10, dst.Type().Bits())
+ itmp, err := strconv.ParseInt(strings.TrimSpace(string(src)), 10, dst.Type().Bits())
if err != nil {
return err
}
@@ -625,7 +625,7 @@ func copyValue(dst reflect.Value, src []byte) (err error) {
dst.SetUint(0)
return nil
}
- utmp, err := strconv.ParseUint(string(src), 10, dst.Type().Bits())
+ utmp, err := strconv.ParseUint(strings.TrimSpace(string(src)), 10, dst.Type().Bits())
if err != nil {
return err
}
@@ -635,7 +635,7 @@ func copyValue(dst reflect.Value, src []byte) (err error) {
dst.SetFloat(0)
return nil
}
- ftmp, err := strconv.ParseFloat(string(src), dst.Type().Bits())
+ ftmp, err := strconv.ParseFloat(strings.TrimSpace(string(src)), dst.Type().Bits())
if err != nil {
return err
}