我的问题的代码在这里: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 结构采用空接口,因为根据运输类型,标签应该是海运或公路,但不能同时是两者。
森栏
相关分类