我正在尝试使用 golang 解码 XML,但以下代码给出了一个空结构


任何人都可以帮忙吗?


当我运行以下代码时,我总是得到


{{ packet} []}

附上源码:


package main


import (

    "fmt"

    "encoding/xml"

//    "io/ioutil"

)


type Field struct {

    XMLName xml.Name `xml:"field"`

    name      string `xml:"name,attr"`

    shownameg string `xml:"showname,attr"`

    fields []Field

}


type Proto struct {

    XMLName xml.Name `xml:"proto"`

    name      string `xml:"name,attr"`

    shownameg string `xml:"showname,attr"`

    fields []Field

}


type Packet struct {

    XMLName xml.Name `xml:"packet"`

    protos []Proto   `xml:"proto"`

}


func main () {   

    data := []byte(`

<packet>

  <proto name="geninfo" pos="0" showname="General information" size="122">

    <field name="timestamp" pos="0" show="Jul 17, 2008 15:50:25.136434000 CST" showname="Captured Time" value="1216281025.136434000" size="122"/>

  </proto>

</packet>

    `)


    packet := Packet{}


    err := xml.Unmarshal([]byte(data), &packet)

    if err != nil {

        fmt.Println (err)

        return

    }


    fmt.Println (packet)


    for proto, _ := range (packet.protos) {

        fmt.Println (proto)

    }

}