Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Go中使用可选标记封送xml_Xml_Go - Fatal编程技术网

如何在Go中使用可选标记封送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

我的问题代码如下:

我需要将数据整理成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>

但我需要这个结果:

<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))
}

谢谢。<代码>>。是丢失的部分,是我以前从未见过的东西。