亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在 Go 中使用可選標簽封送 xml

如何在 Go 中使用可選標簽封送 xml

Go
慕姐8265434 2021-11-29 15:51:08
我的問題的代碼在這里:https : //play.golang.org/p/X8Ey2hqmxLpackage mainimport (    "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 結構采用空接口,因為根據運輸類型,標簽應該是海運或公路,但不能同時是兩者。
查看完整描述

1 回答

?
森欄

TA貢獻1810條經驗 獲得超5個贊

把>.后mainCarriage場的標簽,以表明你希望把字段的內容里面mainCarriage的標簽。將Sea字段名稱更改XMLName為 marshaller 的要求。


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

}


查看完整回答
反對 回復 2021-11-29
  • 1 回答
  • 0 關注
  • 192 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號