Posted by Bojidar Yankov on 05-11-2024
We are using a part of the w3schools cd sample xml data - https://www.w3schools.com/xml/cd_catalog.xml
<CATALOG> <CD> <TITLE>Empire Burlesque</TITLE> <ARTIST>Bob Dylan</ARTIST> <COUNTRY>USA</COUNTRY> <COMPANY>Columbia</COMPANY> <PRICE>10.90</PRICE> <YEAR>1985</YEAR> </CD> <CD> <TITLE>Hide your heart</TITLE> <ARTIST>Bonnie Tyler</ARTIST> <COUNTRY>UK</COUNTRY> <COMPANY>CBS Records</COMPANY> <PRICE>9.90</PRICE> <YEAR>1988</YEAR> </CD> <CD> <TITLE>Greatest Hits</TITLE> <ARTIST>Dolly Parton</ARTIST> <COUNTRY>USA</COUNTRY> <COMPANY>RCA</COMPANY> <PRICE>9.90</PRICE> <YEAR>1982</YEAR> </CD> </CATALOG>
Below is a simple code to unmarshal the xml data into a golang struct and print the data:
package main import ( "encoding/xml" "fmt" ) var xmlString = ` <CATALOG> <CD> <TITLE>Empire Burlesque</TITLE> <ARTIST>Bob Dylan</ARTIST> <COUNTRY>USA</COUNTRY> <COMPANY>Columbia</COMPANY> <PRICE>10.90</PRICE> <YEAR>1985</YEAR> </CD> <CD> <TITLE>Hide your heart</TITLE> <ARTIST>Bonnie Tyler</ARTIST> <COUNTRY>UK</COUNTRY> <COMPANY>CBS Records</COMPANY> <PRICE>9.90</PRICE> <YEAR>1988</YEAR> </CD> <CD> <TITLE>Greatest Hits</TITLE> <ARTIST>Dolly Parton</ARTIST> <COUNTRY>USA</COUNTRY> <COMPANY>RCA</COMPANY> <PRICE>9.90</PRICE> <YEAR>1982</YEAR> </CD> </CATALOG> ` type CD struct { Title string `xml:"TITLE"` Artist string `xml:"ARTIST"` Country string `xml:"COUNTRY"` Company string `xml:"COMPANY"` Price float32 `xml:"PRICE"` Year int32 `xml:"YEAR"` } type Catalog struct { CDs []CD `xml:"CD"` } func main() { var catalog Catalog xml.Unmarshal([]byte(xmlString), &catalog) for _, cd := range catalog.CDs { fmt.Println("----------------") fmt.Printf("Title: %s\n", cd.Title) fmt.Printf("Artist: %s\n", cd.Artist) fmt.Printf("Country: %s\n", cd.Country) fmt.Printf("Company: %s\n", cd.Company) fmt.Printf("Price: %f\n", cd.Price) fmt.Printf("Year: %d\n", cd.Year) } }
---------------- Title: Empire Burlesque Artist: Bob Dylan Country: USA Company: Columbia Price: 10.900000 Year: 1985 ---------------- Title: Hide your heart Artist: Bonnie Tyler Country: UK Company: CBS Records Price: 9.900000 Year: 1988 ---------------- Title: Greatest Hits Artist: Dolly Parton Country: USA Company: RCA Price: 9.900000 Year: 1982
There are a couple of good converters, some of them are: