Golang : Decode XML data from RSS feed
Was looking for a way to decode RSS feed XML data today and here is the code for the tutorial on how to decode XML data from RSS feed with Golang.
Enjoy!
package main
import (
"bytes"
"encoding/xml"
"fmt"
"io/ioutil"
"net/http"
"os"
)
type Rss struct {
Channel Channel `xml:"channel"`
}
type Item struct {
Title string `xml:"title"`
Link string `xml:"link"`
Description string `xml:"description"`
}
type Channel struct {
Title string `xml:"title"`
Link string `xml:"link"`
Description string `xml:"description"`
Items []Item `xml:"item"`
}
func main() {
response, err := http.Get("http://www.thestar.com.my/RSS/Metro/Community/")
if err != nil {
fmt.Println(err)
os.Exit(1)
}
defer response.Body.Close()
XMLdata, err := ioutil.ReadAll(response.Body)
if err != nil {
fmt.Println(err)
os.Exit(1)
}
rss := new(Rss)
buffer := bytes.NewBuffer(XMLdata)
decoded := xml.NewDecoder(buffer)
err = decoded.Decode(rss)
if err != nil {
fmt.Println(err)
os.Exit(1)
}
fmt.Printf("Title : %s\n", rss.Channel.Title)
fmt.Printf("Description : %s\n", rss.Channel.Description)
fmt.Printf("Link : %s\n", rss.Channel.Link)
total := len(rss.Channel.Items)
fmt.Printf("Total items : %v\n", total)
for i := 0; i < total; i++ {
fmt.Printf("[%d] item title : %s\n", i, rss.Channel.Items[i].Title)
fmt.Printf("[%d] item description : %s\n", i, rss.Channel.Items[i].Description)
fmt.Printf("[%d] item link : %s\n\n", i, rss.Channel.Items[i].Link)
}
}
See also : Golang : Get YouTube playlist
By Adam Ng
IF you gain some knowledge or the information here solved your programming problem. Please consider donating to the less fortunate or some charities that you like. Apart from donation, planting trees, volunteering or reducing your carbon footprint will be great too.
Advertisement
Tutorials
+7.4k Golang : Use modern ciphers only in secure connection
+8.5k Golang : Number guessing game with user input verification example
+28.9k Golang : Read, Write(Create) and Delete Cookie example
+17.2k Golang : Set up source IP address before making HTTP request
+39.9k Golang : Remove dashes(or any character) from string
+5.9k Linux : Disable and enable IPv4 forwarding
+8.5k Useful methods to access blocked websites
+6.1k Golang : Extract unicode string from another unicode string example
+6.7k Golang : Totalize or add-up an array or slice example
+15k Golang : Find commonalities in two slices or arrays example
+13k Golang : http.Get example
+15.5k Golang : How to get Unix file descriptor for console and file