From 62bfb159ac5a20c0596ab379d22514ab445f0ffe Mon Sep 17 00:00:00 2001 From: Eli Bendersky Date: Thu, 11 Jul 2019 07:11:19 -0700 Subject: [PATCH] Initial code for XML sample Covers marshal/unmarshal of a simple un-nested type. No .sh file yet --- examples/xml/xml.go | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 examples/xml/xml.go diff --git a/examples/xml/xml.go b/examples/xml/xml.go new file mode 100644 index 0000000..f172bc6 --- /dev/null +++ b/examples/xml/xml.go @@ -0,0 +1,32 @@ +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) +}