如何在Go中使用可选标记封送xml
我的问题代码如下: 我需要将数据整理成SOAP xml。我目前得到的结果是:如何在Go中使用可选标记封送xml,xml,go,Xml,Go,我的问题代码如下: 我需要将数据整理成SOAP xml。我目前得到的结果是: <Carriage> <mainCarriage loadFactor="70" seaCargoType="Container"> <sea xmlns="http://www.example.com/XMLSchema/standard/2012"></sea> </mainCarriage> </Carriage&g
<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>
但我需要这个结果:
<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
标记的属性
车厢结构采用空界面,因为根据装运类型,标签应为海运或陆运,但决不能同时为海运或陆运。Put
>。
在maincoary
字段标签之后,表示要将字段内容放入maincoary
标签中。根据marshaller的要求,将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))
}
谢谢。<代码>>。是丢失的部分,是我以前从未见过的东西。