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 關注
- 162 瀏覽
添加回答
舉報