33 lines
594 B
Go
33 lines
594 B
Go
package main
|
|
|
|
import (
|
|
"encoding/xml"
|
|
"fmt"
|
|
)
|
|
|
|
type Plant struct {
|
|
XMLName xml.Name `xml:"fruit"`
|
|
Id int `xml:"id,attr"`
|
|
Name string `xml:"name"`
|
|
Origin []string `xml:"origin"`
|
|
}
|
|
|
|
func (p Plant) String() string {
|
|
return fmt.Sprintf("Fruit id=%v, name=%v, origin=%v",
|
|
p.Id, p.Name, p.Origin)
|
|
}
|
|
|
|
func main() {
|
|
coffee := &Plant{Id: 27, Name: "Coffee"}
|
|
coffee.Origin = []string{"Ethiopia", "Brazil"}
|
|
|
|
out, _ := xml.MarshalIndent(coffee, " ", " ")
|
|
fmt.Println(string(out))
|
|
|
|
var p Plant
|
|
if err := xml.Unmarshal(out, &p); err != nil {
|
|
panic(err)
|
|
}
|
|
fmt.Println(p)
|
|
}
|