| | |
| | |
| | |
| |
|
| | package xml_test |
| |
|
| | import ( |
| | "encoding/xml" |
| | "fmt" |
| | "os" |
| | ) |
| |
|
| | func ExampleMarshalIndent() { |
| | type Address struct { |
| | City, State string |
| | } |
| | type Person struct { |
| | XMLName xml.Name `xml:"person"` |
| | Id int `xml:"id,attr"` |
| | FirstName string `xml:"name>first"` |
| | LastName string `xml:"name>last"` |
| | Age int `xml:"age"` |
| | Height float32 `xml:"height,omitempty"` |
| | Married bool |
| | Address |
| | Comment string `xml:",comment"` |
| | } |
| |
|
| | v := &Person{Id: 13, FirstName: "John", LastName: "Doe", Age: 42} |
| | v.Comment = " Need more details. " |
| | v.Address = Address{"Hanga Roa", "Easter Island"} |
| |
|
| | output, err := xml.MarshalIndent(v, " ", " ") |
| | if err != nil { |
| | fmt.Printf("error: %v\n", err) |
| | } |
| |
|
| | os.Stdout.Write(output) |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | } |
| |
|
| | func ExampleEncoder() { |
| | type Address struct { |
| | City, State string |
| | } |
| | type Person struct { |
| | XMLName xml.Name `xml:"person"` |
| | Id int `xml:"id,attr"` |
| | FirstName string `xml:"name>first"` |
| | LastName string `xml:"name>last"` |
| | Age int `xml:"age"` |
| | Height float32 `xml:"height,omitempty"` |
| | Married bool |
| | Address |
| | Comment string `xml:",comment"` |
| | } |
| |
|
| | v := &Person{Id: 13, FirstName: "John", LastName: "Doe", Age: 42} |
| | v.Comment = " Need more details. " |
| | v.Address = Address{"Hanga Roa", "Easter Island"} |
| |
|
| | enc := xml.NewEncoder(os.Stdout) |
| | enc.Indent(" ", " ") |
| | if err := enc.Encode(v); err != nil { |
| | fmt.Printf("error: %v\n", err) |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | func ExampleUnmarshal() { |
| | type Email struct { |
| | Where string `xml:"where,attr"` |
| | Addr string |
| | } |
| | type Address struct { |
| | City, State string |
| | } |
| | type Result struct { |
| | XMLName xml.Name `xml:"Person"` |
| | Name string `xml:"FullName"` |
| | Phone string |
| | Email []Email |
| | Groups []string `xml:"Group>Value"` |
| | Address |
| | } |
| | v := Result{Name: "none", Phone: "none"} |
| |
|
| | data := ` |
| | <Person> |
| | <FullName>Grace R. Emlin</FullName> |
| | <Company>Example Inc.</Company> |
| | <Email where="home"> |
| | <Addr>gre@example.com</Addr> |
| | </Email> |
| | <Email where='work'> |
| | <Addr>gre@work.com</Addr> |
| | </Email> |
| | <Group> |
| | <Value>Friends</Value> |
| | <Value>Squash</Value> |
| | </Group> |
| | <City>Hanga Roa</City> |
| | <State>Easter Island</State> |
| | </Person> |
| | ` |
| | err := xml.Unmarshal([]byte(data), &v) |
| | if err != nil { |
| | fmt.Printf("error: %v", err) |
| | return |
| | } |
| | fmt.Printf("XMLName: %#v\n", v.XMLName) |
| | fmt.Printf("Name: %q\n", v.Name) |
| | fmt.Printf("Phone: %q\n", v.Phone) |
| | fmt.Printf("Email: %v\n", v.Email) |
| | fmt.Printf("Groups: %v\n", v.Groups) |
| | fmt.Printf("Address: %v\n", v.Address) |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | } |
| |
|