Golang : Extract XML attribute data with attr field tag example
This is an additional tutorial for previous tutorial on how to add XML attribute in Golang with struct field tag, but this time we will learn how to extract the XML attribute data into a struct and retrieve the values. The code example below should be self explanatory. Leave comment if you have question.
package main
import (
"encoding/xml"
"fmt"
)
func main() {
chanData, _ := GetChannelData()
fmt.Println("Total Upload Views : ", chanData.Stats.TotalUploadViews)
fmt.Println("Subscriber Count : ", chanData.Stats.SubscriberCount)
}
type Entry struct {
Stats Statistics `xml:"statistics"`
User string `xml:"username"`
}
type Statistics struct {
TotalUploadViews int `xml:"totalUploadViews,attr"` // here!
SubscriberCount int `xml:"subscriberCount,attr"`
}
func GetChannelData() (*Entry, error) {
rawXML := `<entry>
<yt:statistics lastWebAccess='1990-01-01T00:00:00.000Z' subscriberCount='698' viewCount='0' totalUploadViews='11286743'/>
<yt:username>Adam</yt:username>
</entry>`
XMLbytes := []byte(rawXML)
e := new(Entry)
xml.Unmarshal(XMLbytes, e)
return e, nil
}
Output :
Total Upload Views : 11286743
Subscriber Count : 698
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
+9.9k Golang : Get escape characters \u form from unicode characters
+6.7k Default cipher that OpenSSL used to encrypt a PEM file
+9.2k Golang : Launch Mac OS X Preview (or other OS) application from your program example
+18.3k Golang : How to get hour, minute, second from time?
+12.5k Golang : Sort and reverse sort a slice of bytes
+8.7k Golang : HTTP Routing with Goji example
+5.7k Golang : Fix opencv.LoadHaarClassifierCascade The node does not represent a user object error
+20.4k Android Studio : AlertDialog and EditText to get user string input example
+5.8k Golang : Shuffle array of list
+5.4k PHP : Fix Call to undefined function curl_init() error
+10.8k Golang : How to transmit update file to client by HTTP request example
+14.4k Golang : Overwrite previous output with count down timer