Unmarshalling attributes from the current XML element into an anonymous struct works:
package main
import (
"encoding/xml"
"fmt"
)
type Attrs struct {
Attr1 int `xml:"attr1,attr"`
Attr2 int `xml:"attr2,attr"`
}
type Element struct {
Attrs
}
func main() {
data := `<element attr1="1" attr2="2"></element>`
v := Element{}
err := xml.Unmarshal([]byte(data), &v)
if err != nil {
fmt.Printf("error: %v", err)
return
}
fmt.Printf("%#v\n", v)
}
This prints main.Element{Attrs:main.Attrs{Attr1:1, Attr2:2}}
as expected.
If the anonymous struct member is given a name, v.Attr1
and v.Attr2
are not unmarshalled.
type Element struct {
AttrGroup Attrs
}
What's the correct tag to use on the struct member in this case?
Edit: Playground version