在模板上的golang中迭代嵌套结构

时间:2015-09-07 01:29:15

标签: templates go range

我有以下代码,并希望迭代模板中的主题,但对于我的生活,我似乎无法超越它是嵌套容器的事实。

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等,因为我看它们。

1 个答案:

答案 0 :(得分:1)

使用以下模板:

<ul>{{range .Themes}}
  <li>{{.Name}} {{.Tag}}{{end}}
</ul>

并使用data参数作为*ThemeList执行它。

Playground Example