我有以下代码,并希望迭代模板中的主题,但对于我的生活,我似乎无法超越它是嵌套容器的事实。
type ThemeList struct {
XMLName xml.Name `xml:"Themes"`
Themes []Theme `xml:"Theme"`
}
type Theme struct {
XMLName xml.Name `xml:"Theme"`
Name string `xml:"Name,attr"`
Page string `xml:"Page,attr"`
Tag string `xml:"Tag,attr"`
Day string `xml:"Day,attr"`
}
// Fetch the current XML document and return the Themelist[]
func openXML(filename string) ThemeList {
xmlFile, _ := os.Open(filename)
defer xmlFile.Close()
XMLdata, _ := ioutil.ReadAll(xmlFile)
var t ThemeList
xml.Unmarshal(XMLdata, &t)
return t
}
如何在{{range}}中输出这些内容,其中每个主题都是单个列表项的一部分?输出将在模板中使用.Name .Tag等,因为我看它们。
答案 0 :(得分:1)
使用以下模板:
<ul>{{range .Themes}}
<li>{{.Name}} {{.Tag}}{{end}}
</ul>
并使用data参数作为*ThemeList
执行它。