gpt4 book ai didi

xml - 从结构编码 xml

转载 作者:数据小太阳 更新时间:2023-10-29 03:38:39 24 4
gpt4 key购买 nike

我刚开始尝试让下面的代码正常工作,但运气不好。看起来我没有正确编码结构部分的结构。帮助!

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(p); err != nil {
fmt.Printf("error: %v\n", err)
}
if err := enc.Encode(h); err != nil {
fmt.Printf("error: %v\n", err)
}
if err := enc.Encode(a); err != nil {
fmt.Printf("error: %v\n", err)
}
}

Go playground here

预期输出。我目前得到的是一个空的 Asset 元素。

 <Asset>
<Person>
<email>person@a.com</email>
<phone>1111</phone>
</Person>
<Host>
<hostname>boxen</hostname>
<address>1 Place St</address>
</Host>
</Asset>

最佳答案

只要 personhost 未导出,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)
}
}

关于xml - 从结构编码 xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47359705/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com