给出以下结构:
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>"`
//...
}
修改 我发现这个discussion,然后谷歌搜索,所以我想要的可能目前不可行
答案 0 :(得分:6)
你现在是对的,这是不可能的。但是你可以使用像
这样的子结构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"`
}