Sie können es auf zwei Arten tun. Zum einen können Sie einen Teil einer größeren Struktur Kommentar machen, die Mitglieder einbettet und es um einen Kommentar abzug ein Mitglied jedes Mal machen Marschall vermarshallten ist:
type Members struct {
XMLName xml.Name `xml:"members"`
Members []CommentedMember
}
type CommentedMember struct {
Member
comment xml.Comment
}
func (cm CommentedMember) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
if cm.comment != nil {
err := e.EncodeToken(cm.comment)
if err != nil {
return err
}
}
return e.Encode(cm.Member)
}
type Member struct {
XMLName xml.Name `xml:"member"`
}
Der zweite Weg ist eine separate Comment
Typ zu erstellen und Ihre Members
Struktur machen verschiedene Typen enthalten:
type Members2 struct {
XMLName xml.Name `xml:"members"`
Members []interface{}
}
type Comment string
func (cm Comment) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
if cm != "" {
return e.EncodeToken(xml.Comment(cm))
}
return nil
}
type Member struct {
XMLName xml.Name `xml:"member"`
}
Hier sind sowohl auf dem Spielplatz: https://play.golang.org/p/3n-xH1Zc-n.
Dekodieren Sie Ihre XML mit 'encoding/xml'? –