The unmarshal and marshal XML text should be consistent if not modified deserialize variable.
For #61881
Fixes #62051
Change-Id: I475f7b05211b618685597d3ff20b97e3bbeaf8f8
GitHub-Last-Rev:
6831c770c384831798cb1c6dc4674e5d4caa5e3c
GitHub-Pull-Request: golang/go#58401
Reviewed-on: https://go-review.googlesource.com/c/go/+/522316
Run-TryBot: Ian Lance Taylor <iant@golang.org>
Reviewed-by: Russ Cox <rsc@golang.org>
Auto-Submit: Ian Lance Taylor <iant@google.com>
Commit-Queue: Ian Lance Taylor <iant@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@google.com>
}
}
- // If a name was found, namespace is overridden with an empty space
+ // If a empty name was found, namespace is overridden with an empty space
if tinfo.xmlname != nil && start.Name.Space == "" &&
+ tinfo.xmlname.xmlns == "" && tinfo.xmlname.name == "" &&
len(p.tags) != 0 && p.tags[len(p.tags)-1].Space != "" {
start.Attr = append(start.Attr, Attr{Name{"", xmlnsPrefix}, ""})
}
XMLName Name `xml:""` // Sets empty namespace
}
+ type D struct {
+ XMLName Name `xml:"d"`
+ }
+
type A struct {
XMLName Name `xml:""`
C C `xml:""`
+ D D
}
var a A
structSpace := "b"
- xmlTest := `<A xmlns="` + structSpace + `"><C xmlns=""></C></A>`
+ xmlTest := `<A xmlns="` + structSpace + `"><C xmlns=""></C><d></d></A>`
t.Log(xmlTest)
err := Unmarshal([]byte(xmlTest), &a)
if err != nil {