gpt4 book ai didi

go - 将结构数组编码为没有父标记的 xml

转载 作者:行者123 更新时间:2023-12-01 22:17:34 25 4
gpt4 key购买 nike

我正在尝试将带有数组的 go 结构编码为 xml。在这个数组中,我需要每个元素都有一个属性和一个值。我不需要它位于父 xml 标记内。

我有下面的代码。

package main

import (
"encoding/xml"
"fmt"
"os"
)

func main() {
type Person struct {
XMLName xml.Name `xml:"person"`
Id int `xml:"id,attr"`
FirstName string
}

a := &Person{
Id: 13,
FirstName: "John",
}
b := &Person{
Id: 14,
FirstName: "Doe",
}
x := []*Person{}
x = append(x, a)
x = append(x, b)

enc := xml.NewEncoder(os.Stdout)
enc.Indent(" ", " ")
if err := enc.Encode(x); err != nil {
fmt.Printf("error: %v\n", err)
}
}

它产生以下输出。
<person id="13">
<FirstName>John</FirstName>
</person>
<person id="14">
<FirstName>Doe</FirstName>
</person>

但我需要如下所示。
<person id="13">John</person>
<person id="14">Doe</person>

非常感谢您对此的任何帮助。我可以用 go 做到这一点吗?

最佳答案

只需添加 xml:",chardata"标记到 FirstName提交:

package main

import (
"encoding/xml"
"fmt"
"os"
)

func main() {
type Person struct {
XMLName xml.Name `xml:"person"`
ID int `xml:"id,attr"`
FirstName string `xml:",chardata"`
}

a := &Person{
ID: 13,
FirstName: "John",
}
b := &Person{
ID: 14,
FirstName: "Doe",
}
x := []*Person{}
x = append(x, a)
x = append(x, b)

enc := xml.NewEncoder(os.Stdout)
enc.Indent(" ", " ")
if err := enc.Encode(x); err != nil {
fmt.Printf("error: %v\n", err)
}
}


输出:
<person id="13">John</person>
<person id="14">Doe</person>

关于go - 将结构数组编码为没有父标记的 xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58569787/

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