Fixes #569
R=rsc, r
CC=golang-dev
https://golang.org/cl/194121
// to create a valid Go struct name. It also converts the
// name to lower case letters.
func fieldName(original string) string {
+
+ var i int
+ //remove leading underscores
+ for i = 0; i < len(original) && original[i] == '_'; i++ {
+ }
+
return strings.Map(
func(x int) int {
- if unicode.IsDigit(x) || unicode.IsLetter(x) {
+ if x == '_' || unicode.IsDigit(x) || unicode.IsLetter(x) {
return unicode.ToLower(x)
}
return -1
},
- original)
+ original[i:])
}
// Unmarshal a single XML element into val.
package xml
import (
+ "bytes"
"io"
"os"
"reflect"
}
}
}
+
+type item struct {
+ Field_a string
+}
+
+func TestIssue569(t *testing.T) {
+ data := `<item><field_a>abcd</field_a></item>`
+ var i item
+ buf := bytes.NewBufferString(data)
+ err := Unmarshal(buf, &i)
+
+ if err != nil || i.Field_a != "abcd" {
+ t.Fatalf("Expecting abcd")
+ }
+}