为了账号安全,请及时绑定邮箱和手机立即绑定

Golang 嵌套、重命名的 XML 属性

Golang 嵌套、重命名的 XML 属性

Go
海绵宝宝撒 2022-01-04 10:06:07
给定以下结构:type book struct {    XMLName xml.Name   `xml:"DailyAct"`    Symbol     string  `xml:"TradeInstrId,attr"`    EntityId   string  `xml:"EntityId,attr"`    AssetClass string  `xml:"AssetClass,attr"`    Open       int     `xml:"Open"`    High       int     `xml:"High"`    Low        int     `xml:"Low"`    Close      int     `xml:"Close"`    // Type      string `` //I'll leave this for another question}我当前的 XML:  <DailyAct EntityId="foo" AssetClass="bar" TradeInstrId="Symbol" >      <Open>2</Open>      <High>3</High>      <Low>1</Low>      <Close>5</Close>  </DailyAct>但是,我需要重新调整结构的某些字段(或以另一种方式生成 xml)来实现:<DailyAct EntityId="foo" AssetClass="bar" TradeInstrId="Symbol">  <Open Price="2" Type="IND"/>  <High Price="6" Type="IND"/>  <Low Price="1" Type="IND"/>  <Close Price="4" Type="IND"/></DailyAct>但是我得到:&errors.errorString{s:"xml: DailyAct>Open chain not valid with Price,attr flag"} (actual)当我尝试像这样嵌套字段时:type book struct {    //...    Open       int     `xml:"DailyAct>Open,Price,attr>"`    //...}编辑: 我发现了这个讨论,同时在谷歌上搜索,所以我想要的东西目前可能不可行
查看完整描述

1 回答

?
SMILET

TA贡献1796条经验 获得超4个赞

你是对的,目前这是不可能的。但是您可以使用子结构,例如


type PriceType struct {

    Price int    `xml:"Price,attr"`

    Type  string `xml:"Type,attr"`

}


type Book struct {

    XMLName    xml.Name  `xml:"DailyAct"`

    Symbol     string    `xml:"TradeInstrId,attr"`

    EntityId   string    `xml:"EntityId,attr"`

    AssetClass string    `xml:"AssetClass,attr"`

    Open       PriceType `xml:"Open"`

    High       PriceType `xml:"High"`

    Low        PriceType `xml:"Low"`

    Close      PriceType `xml:"Close"`

}

这里的例子http://play.golang.org/p/Ekd6Xf3miS


查看完整回答
反对 回复 2022-01-04
  • 1 回答
  • 0 关注
  • 194 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信