XML / Parse XML from file / Essential Go

Run Settings
LanguageGo
Language Version
Run Command
package main import ( "bytes" "encoding/xml" "fmt" "io" "log" "os" ) var xmlStr = ` <people> <person age="34"> <first-name>John</first-name> <address> <city>San Francisco</city> <state>CA</state> </address> </person> <person age="23"> <first-name>Julia</first-name> </person> </people>` type People struct { Person []Person `xml:"person"` } type Person struct { Age int `xml:"age,attr"` FirstName string `xml:"first-name"` Address Address `xml:"address"` } type Address struct { City *string `xml:"city"` State string `xml:"state"` } func decodeFromReader(r io.Reader) (*People, error) { var people People decoder := xml.NewDecoder(r) err := decoder.Decode(&people) if err != nil { return nil, err } return &people, nil } func decodeFromString(s string) (*People, error) { r := bytes.NewBufferString(s) return decodeFromReader(r) } func decodeFromFile(path string) (*People, error) { f, err := os.Open(path) if err != nil { return nil, err } defer f.Close() return decodeFromReader(f) } func main() { people, err := decodeFromString(xmlStr) if err != nil { log.Fatalf("decodeFromString failed with '%s'\n", err) } fmt.Printf("%#v\n\n", people) }
Editor Settings
Theme
Key bindings
Full width
Lines