1 回答

TA貢獻1868條經(jīng)驗 獲得超4個贊
結(jié)構(gòu)中的 結(jié)構(gòu)標記包含 ,但它似乎不需要。如果將其更改為 ,則解析似乎執(zhí)行正確的操作:RoGamesrorootgame
type ro struct {
RoGames []roGame `xml:"game"`
}
而且,由于您已經(jīng)“進入”標記,因此無需將其添加到結(jié)構(gòu)的每個字段。gameroGame
需要注意的另一件事是,您應(yīng)該在解析時處理所有錯誤,因為使用上面的修復程序會發(fā)生新的錯誤。只有在調(diào)整解析器代碼時才注意到它:
var ro ro
err = xml.Unmarshal(inBytes, &ro)
if err != nil {
panic(err)
}
首先,這會輸出以下內(nèi)容:
panic: strconv.ParseInt: parsing "z0046-54": invalid syntax
這是因為結(jié)構(gòu)定義中的字段是 一個 ,但它的數(shù)據(jù)是 ,它不能被解釋為整數(shù)。Idintz0046-54
因此,如果我們改變它,我們將為您的結(jié)構(gòu)獲得以下結(jié)果:roGame
type roGame struct {
Id string `xml:"id"` // <-- Change is here
Black string `xml:"black"`
White string `xml:"white"`
Moves string `xml:"moves"`
Alt5 string `xml:"alt_5"`
Rule string `xml:"rule"`
Winner string `xml:"winner"`
}
現(xiàn)在,代碼以有用的格式輸出數(shù)據(jù)。您還可以使用這樣的工具來生成結(jié)構(gòu),這樣可以使其更容易并且不易出錯。
- 1 回答
- 0 關(guān)注
- 90 瀏覽
添加回答
舉報