我是新手,试图让下面的代码工作,没有运气。看起来我没有正确编码结构部分的结构。救命啊!
<Asset>
<Person>
<email>person@a.com</email>
<phone>1111</phone>
</Person>
<Host>
<hostname>boxen</hostname>
<address>1 Place St</address>
</Host>
</Asset>
预期产出。我目前得到的是一个空的Asset元素。
{{1}}
答案 0 :(得分:3)
只要person
和host
未被导出,enc.Encode
就无法了解它们。导出它们将提供您想要的输出。
package main
import (
"encoding/xml"
"fmt"
"os"
)
func main() {
type Person struct {
Email string `xml:"email"`
Phone string `xml:"phone"`
}
type Host struct {
Hostname string `xml:"hostname"`
Address string `xml:"address"`
}
type Asset struct {
Person Person
Host Host
}
p := &Person{Email: "person@a.com", Phone: "1111"}
h := &Host{Hostname: "boxen", Address: "1 Place St"}
a := &Asset{Person: *p, Host: *h}
enc := xml.NewEncoder(os.Stdout)
enc.Indent(" ", " ")
if err := enc.Encode(a); err != nil {
fmt.Printf("error: %v\n", err)
}
}
答案 1 :(得分:1)
您必须导出&#34;资产&#34;的属性。通过以大写字母开头来输入:
type Asset struct {
Person Person
Host Host
}