golang - 在xml字符串中提取元素

时间:2015-04-16 09:22:29

标签: xml go

我想提取所有loc元素值,但我得到一个空数组

我的代码:

package main

import (
    "fmt"
    "encoding/xml"
)

type Query struct {
    XMLName xml.Name `xml:"urlset"`
    locs []Loc `xml:"url>loc"`
}

type Loc struct {
    loc string 
}

var data = []byte(`<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
   <loc>http://www.konga.com/mobile-recharge</loc>
   <lastmod>2015-04-14</lastmod>
   <changefreq>daily</changefreq>
   <priority>0.5</priority>
</url>
<url>
   <loc>http://www.konga.com/beauty-health-personal-care</loc>
   <lastmod>2015-04-14</lastmod>
   <changefreq>daily</changefreq>
   <priority>0.5</priority>
</url>
</urlset>`)


func main() {

    var q Query
    xml.Unmarshal(data, &q)
    fmt.Println(q.locs)
}

1 个答案:

答案 0 :(得分:2)

它只解组已导出的Caps字段。 Loc也不应该是一个结构,但可以直接成为一个字符串。

package main

import (
    "encoding/xml"
    "fmt"
)

type Query struct {
    XMLName xml.Name `xml:"urlset"`
    Locs    []Loc    `xml:"url>loc"`
}

type Loc string

var data = []byte(`<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
   <loc>http://www.konga.com/mobile-recharge</loc>
   <lastmod>2015-04-14</lastmod>
   <changefreq>daily</changefreq>
   <priority>0.5</priority>
</url>
<url>
   <loc>http://www.konga.com/beauty-health-personal-care</loc>
   <lastmod>2015-04-14</lastmod>
   <changefreq>daily</changefreq>
   <priority>0.5</priority>
</url>
</urlset>`)

func main() {

    var q Query
    xml.Unmarshal(data, &q)
    fmt.Println(q.Locs)
}