|
|
|
|
|
|
|
|
|
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>[email protected]</Addr> |
|
</Email> |
|
<Email where='work'> |
|
<Addr>[email protected]</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) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|