在结构中使用重复的字段名称来生成 XML 站点地图

Use duplicate field names in struct to generate XML sitemap

我正在用 Go 构建站点地图生成器。我想生成以下 URL 结构以适应 Google 站点地图结构。

<url>
    <loc>https://www.website.nl/nl/over-ons</loc>
    <xhtml:link rel="alternate" href="https://www.website.nl/nl/over-ons" hreflang="nl"/>
    <xhtml:link rel="alternate" href="https://www.website.nl/en/about-us" hreflang="en"/>
    <xhtml:link rel="alternate" href="https://www.website.nl/de/uber-uns" hreflang="de"/>
    <changefreq>daily</changefreq>
    <priority>0.7</priority>
    <lastmod>2020-12-05T03:59:58+01:00</lastmod>
</url>

因此我创建了以下结构:

type Url struct {
    Loc         string      `xml:"loc"`
    Link        Link        `xml:"link"`
    Changefreq  string      `xml:"changefreq"`
    Priority    string      `xml:"priority"`
    Lastmod     string      `xml:"lastmod"`
}

type Link struct {
    Rel  string         `xml:"rel,attr,omitempty"`
    Href string         `xml:"href,attr"`
    Hreflang string     `xml:"hreflang,attr"`
}

我不知道如何处理 link 字段。可以帮助解决以下问题吗?

  1. 如何在结构中添加三次相同的“link”字段?
  2. 如何命名字段“xhtml:link”,我在名称中的 : 上遇到错误?

如果您想添加多个 Link 条目,只需为此使用一个数组:

Link []Link `xml:"xhtml:link"`