dongrou839975 2016-04-07 21:22
浏览 84
已采纳

Golang嵌套,重命名的XML属性

Given the following struct:

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
}

My current XML:

  <DailyAct EntityId="foo" AssetClass="bar" TradeInstrId="Symbol" >
      <Open>2</Open>
      <High>3</High>
      <Low>1</Low>
      <Close>5</Close>
  </DailyAct>

But, I need to repurpose certain fields of the struct (or generate xml another way) to achieve:

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

But I get: &errors.errorString{s:"xml: DailyAct>Open chain not valid with Price,attr flag"} (actual) when I try to nest fields like so:

type book struct {
    //...
    Open       int     `xml:"DailyAct>Open,Price,attr>"`
    //...
}

Edit: I found this discussion, while googling around so what I'm going for may not be feasible currently

  • 写回答

1条回答 默认 最新

  • dongzhi6927 2016-04-08 00:36
    关注

    You are right currently it's impossible. But you can use sub-structures like

    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"`
    }
    

    Example here http://play.golang.org/p/Ekd6Xf3miS

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 微信小程序协议怎么写
  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看