Этот
type Static struct {
XMLName string `xml:"static"`
Duration int `xml:"duration"`
File string `xml:"file"`
}
type Transition struct {
XMLName string `xml:"transition"`
Duration float64 `xml:"duration"`
From string `xml:"from"`
To string `xml:"to"`
}
type Background struct {
XMLName string `xml:"background"`
Items []interface{}
}
bk := Background{
Items: []interface{}{
&Static{
Duration: 11,
File: "foo",
},
&Transition{
Duration: 22,
From: "aaa",
To: "bbb",
},
&Static{
Duration: 33,
File: "bar",
},
&Transition{
Duration: 44,
From: "xxx",
To: "yyy",
},
},
}
out, err := xml.Marshal(&bk)
должен иметь вашу закрытую ( игровую площадку ).
Обратите внимание, что для получения правильно сериализованного - в смысле следующего за другой в указанном порядке - список элементов, вы должны использовать структуру данных, которая это отражает; В этом простом случае лучше всего подходит срез Go.
В сложных случаях можно сделать так, чтобы ваш настраиваемый тип реализовывал интерфейс encoding/xml.Marshaler
и использовал средства encoding/xml
нижнего уровня для кодирования отдельных эменетов в любом заказать вам wi sh.