第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

解析 xml 后零輸出

解析 xml 后零輸出

Go
喵喵時光機 2022-08-15 16:24:18
我在 Go 中解析 xml 時遇到問題。一個只有一個“游戲”的 xml 示例:<root><game><id>z0046-54</id><creation_time>1612988348</creation_time><black>aivo</black><white>gosha</white><turn_color>white</turn_color><board>h8 h9 i6 i8 j6 g9 j9 j7 k6 l6 g10 k7 l7 i10 i9 g6 j10 k11 j5 i4 k4 l3 h5 m5 j8 j11 g8 h7 i7 l5 k9 h6 m7 k12 l13 n6 m8 n9 m9</board><moves>h8 swap h9 i6 swap i8 swap j6 g9 j9 j7 k6 l6 g10 k7 l7 i10 i9 g6 j10 k11 j5 i4 k4 l3 h5 m5 j8 j11 g8 h7 i7 l5 k9 h6 m7 k12 l13 n6 m8 n9 m9</moves><alt5></alt5><proposition></proposition><proposer></proposer><status>finished</status><rule>taraguchi10</rule><time>7776000</time><tpm>2592000</tpm><start_time>1612988348</start_time><end_time>1613736768</end_time><winner>black</winner><winby>resign</winby><time_left_black>7536372</time_left_black><time_left_white>7267413</time_left_white><tid>z0046</tid></game></root>我想從 xml 獲取游戲切片。帶有游戲和所有文件結(jié)構(gòu)的代碼:package datatype ro struct {    RoGames []roGame `xml:"root>game"`}type roGame struct {    Id     int    `xml:"game>id"`    Black  string `xml:"game>black"`    White  string `xml:"game>white"`    Moves  string `xml:"game>moves"`    Alt5   string `xml:"game>alt_5"`    Rule   string `xml:"game>rule"`    Winner string `xml:"game>winner"`}另一個文件:package dataimport (    "encoding/xml"    "fmt"    "io/ioutil"    "os")func Xml() {    xmlFile, err := os.Open("data.xml")    if err != nil {        panic(err)    }    fmt.Println("Successfully Opened xml")    defer xmlFile.Close()    inBytes, err := ioutil.ReadAll(xmlFile)    if err != nil {        panic(err)    }    var ro ro    xml.Unmarshal(inBytes, &ro)    fmt.Println(ro)}我從主包調(diào)用“Xml”函數(shù)并獲取此輸出:Successfully Opened xml{[]}我認為解析過程是可以的,這是sctructs的問題。
查看完整描述

1 回答

?
MYYA

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),這樣可以使其更容易并且不易出錯。


查看完整回答
反對 回復 2022-08-15
  • 1 回答
  • 0 關(guān)注
  • 90 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號