XML

Este é um exemplo de como ler um feed RSS2 e interpretar o retorno para extrair os dados que queremos.

XML

Este é um exemplo de como ler um feed RSS2 e interpretar o retorno para extrair os dados que queremos.

Primeiro criamos as structs que vão conter os dados vindos do XML

// RSS contem a base da estrutura do feed
type RSS struct {
	XMLName     xml.Name `xml:"rss"`
	Version     string   `xml:"version,attr"`
	Title       string   `xml:"channel>title"`
	Link        string   `xml:"channel>link"`
	Description string   `xml:"channel>description"`
	PubDate     string   `xml:"channel>pubDate"`
	ItemList    []Item   `xml:"channel>item"`
}

// Item contem os posts no feed
type Item struct {
	Title       string `xml:"title"`
	Link        string `xml:"link"`
	Description string `xml:"description"`
	Content     string `xml:"encoded"`
	PubDate     string `xml:"pubDate"`
	Comments    string `xml:"comments"`
}

Então baixamos o feed da internet

resp, err := http.Get("http://pizzadedados.com/feed.xml")
if err != nil {
	fmt.Println(err)
	return
}

body, err := ioutil.ReadAll(resp.Body)
if err != nil {
	fmt.Println(err)
}
defer closer(resp.Body)

Finalmente interpretamos os dados o armazenamos na struct

rss := RSS{}
err = xml.Unmarshal(body, &rss)
if err != nil {
	fmt.Println(err)
}

Pronto agora só precisamos exibir os dados

for k, i := range rss.ItemList {
	fmt.Println(k, i.Title)
}

Arquivos desse post: