我有以下的代碼片段,我一直在試圖讓它工作的牆上撞我的頭。我到處尋找解決辦法,但沒有發現我找到的那些方法。unmarshal與轉到嵌套xml
看起來我的映射是xml.Unmarshal
命令的問題,因爲它與嵌套字段有關。下面的代碼用於檢索名爲unit
的第一個值,並且位於xml代碼的頂層。
其他兩個字段爲零,它們嵌套在兩個深度。這意味着結構設置不正確。這是代碼。
package main
import (
"encoding/xml"
"fmt"
)
type datevalue struct {
Date int `xml:"date"`
Value float32 `xml:"value"`
}
type pv struct {
XMLName xml.Name `xml:"series"`
Unit string `xml:"unit"`
datevalues datevalue `xml:"values>dateValue"`
}
func main() {
contents := `<series>
<timeUnit>DAY</timeUnit>
<unit>Wh</unit><measuredBy>INVERTER</measuredBy>
<values><dateValue>
<date>2015-11-04 00:00:00</date>
<value>5935.405</value>
</dateValue></values>
</series>`
m := &pv{}
xml.Unmarshal([]byte(contents), &m)
fmt.Printf("%s %f %d\n", m.Unit, m.datevalues.Value, m.datevalues.Date)
}
這裏是輸出:
Wh 0.000000 0
我沒有看到一個問題在這裏.... – Brick
你解組忽略錯誤,你試圖將一個日期解組到一個int中,並且'datevalues'字段不會被導出,所以它不會被xml包所看到。 – JimB