这是我的问题代码:https://play.golang.org/p/X8Ey2hqmxL。
我需要将数据编组成SOAP XML格式。目前我得到的结果是:
但是我需要这个结果:
无论我尝试什么,都无法将结构体编组,以使loadFactor和seaCargoType成为
Carriage结构体采用空接口,因为根据运输类型,标签应该是海上或公路上的,但永远不会同时存在。
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结构体采用空接口,因为根据运输类型,标签应该是海上或公路上的,但永远不会同时存在。
>.
是缺失的部分,而且这是我以前从未见过的东西。 - Jim Gaylard