gpt4 book ai didi

xml - 如何在 Go 中使用可选标签编码 xml

转载 作者:IT王子 更新时间:2023-10-29 01:10:28 25 4
gpt4 key购买 nike

我的问题的代码在这里:https://play.golang.org/p/X8Ey2hqmxL

package main

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

type Carriage struct {
MainCarriage interface{} `xml:"mainCarriage"`
}

type SeaCarriage struct {
Sea xml.Name `xml:"http://www.example.com/XMLSchema/standard/2012 sea"`
LoadFactor float64 `xml:"loadFactor,attr"`
SeaCargoType string `xml:"seaCargoType,attr"`
}

type RoadCarriage struct {
Road xml.Name `xml:"http://www.example.com/XMLSchema/standard/2012 road"`
}

func main() {

fr := Carriage{
MainCarriage: SeaCarriage{
LoadFactor: 70,
SeaCargoType: "Container",
},
}
xmlBlob, err := xml.MarshalIndent(&fr, "", "\t")
if err != nil {
log.Fatal(err)
}
fmt.Println(string(xmlBlob))
}

我需要将数据编码到 SOAP xml 中。我目前得到这个结果:

<Carriage>
<mainCarriage loadFactor="70" seaCargoType="Container">
<sea xmlns="http://www.example.com/XMLSchema/standard/2012"></sea>
</mainCarriage>
</Carriage>

但我需要这个结果:

<Carriage>
<mainCarriage>
<sea xmlns="http://www.example.com/XMLSchema/standard/2012" loadFactor="70" seaCargoType="Container"></sea>
</mainCarriage>
</Carriage>

无论我尝试什么,我都无法编码结构,使 loadFactor 和 seaCargoType 成为 sea 标签的属性。

Carriage 结构体采用空接口(interface),因为根据装运类型,标签应该是海运或陆运,但绝不能两者兼而有之。

最佳答案

mainCarriage 字段标签之后放置 >. 以指示您要将字段内容放入 mainCarriage 标签内。根据编码器的要求,将Sea字段的名称更改为XMLName

package main

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

type Carriage struct {
MainCarriage interface{} `xml:"mainCarriage>."`
}

type SeaCarriage struct {
XMLName xml.Name `xml:"http://www.example.com/XMLSchema/standard/2012 sea"`
LoadFactor float64 `xml:"loadFactor,attr"`
SeaCargoType string `xml:"seaCargoType,attr"`
}

type RoadCarriage struct {
Road xml.Name `xml:"http://www.example.com/XMLSchema/standard/2012 road"`
}

func main() {

fr := Carriage{
MainCarriage: SeaCarriage{
LoadFactor: 70,
SeaCargoType: "Container",
},
}
xmlBlob, err := xml.MarshalIndent(&fr, "", "\t")
if err != nil {
log.Fatal(err)
}
fmt.Println(string(xmlBlob))
}

Playground

关于xml - 如何在 Go 中使用可选标签编码 xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34221384/

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