]> Cypherpunks repositories - gostls13.git/commitdiff
xml: allow parsing of <_> </_>.
authorDavid Crawshaw <david.crawshaw@zentus.com>
Mon, 7 Nov 2011 15:47:44 +0000 (10:47 -0500)
committerRuss Cox <rsc@golang.org>
Mon, 7 Nov 2011 15:47:44 +0000 (10:47 -0500)
R=rsc, nigeltao
CC=golang-dev
https://golang.org/cl/5298061

src/pkg/encoding/xml/read.go
src/pkg/encoding/xml/read_test.go

index e97abec55a4490103fd6732a9781282dd2139445..9617150c8f1d1e871b20119b804fbca0fc0a8cd8 100644 (file)
@@ -201,8 +201,8 @@ func (p *Parser) Unmarshal(val interface{}, start *StartElement) error {
 func fieldName(original string) string {
 
        var i int
-       //remove leading underscores
-       for i = 0; i < len(original) && original[i] == '_'; i++ {
+       //remove leading underscores, without exhausting all characters
+       for i = 0; i < len(original)-1 && original[i] == '_'; i++ {
        }
 
        return strings.Map(
index d39c2d52a835cbbeb9adce7a09453a525c0ee0eb..fbb7fd5d2f276e2e75868921cc415ea956a3cb69 100644 (file)
@@ -245,6 +245,9 @@ const pathTestString = `
             <Value>C</Value>
             <Value>D</Value>
         </Item1>
+        <_>
+            <value>E</value>
+        </_>
     </items>
     <after>2</after>
 </result>
@@ -279,11 +282,17 @@ type PathTestD struct {
        Before, After string
 }
 
+type PathTestE struct {
+       Underline     string `xml:"items>_>value"`
+       Before, After string
+}
+
 var pathTests = []interface{}{
        &PathTestA{Items: []PathTestItem{{"A"}, {"D"}}, Before: "1", After: "2"},
        &PathTestB{Other: []PathTestItem{{"A"}, {"D"}}, Before: "1", After: "2"},
        &PathTestC{Values1: []string{"A", "C", "D"}, Values2: []string{"B"}, Before: "1", After: "2"},
        &PathTestD{Other: PathTestSet{Item1: []PathTestItem{{"A"}, {"D"}}}, Before: "1", After: "2"},
+       &PathTestE{Underline: "E", Before: "1", After: "2"},
 }
 
 func TestUnmarshalPaths(t *testing.T) {