1 回答

TA贡献1847条经验 获得超11个赞
您可以实现xml.Marshaler接口PersonWrapper(并将 xmlnames 添加到嵌套结构中)。
type Pack struct {
XMLName struct{} `xml:"package"`
People []PersonWrapper
}
type Person struct {
XMLName xml.Name `xml:"dc:contributor"`
Id string `xml:"id,attr"`
Name string `xml:"-"`
Surname string `xml:"-"`
FullName string `xml:",innerxml"`
}
type Meta struct {
XMLName xml.Name `xml:"meta"`
Refines string `xml:"refines,attr"`
Property string `xml:"property,attr"`
Scheme string `xml:"scheme,attr,omitempty"`
Value string `xml:",innerxml"`
}
type PersonWrapper struct {
Person Person `xml:"dc:contributor"`
Metas []Meta `xml:"meta"`
}
func (pw PersonWrapper) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
if err := e.Encode(pw.Person); err != nil {
return err
}
if err := e.Encode(pw.Metas); err != nil {
return err
}
return nil
}
https://play.golang.org/p/hzrBdHXHwOB
- 1 回答
- 0 关注
- 148 浏览
添加回答
举报