简单的 XML 解组返回空值

我正在尝试在 Go 中解组一些基本的 XML。我之前已经能够在 Go 中解组非常大的 XML 文件,所以我在这里遇到的问题真的让我感到困惑。


Unmarshalling 会发现一项,因为它应该找到一项,但所有值都是它们的默认值:字符串为空,浮点数为零。


任何提示都会有所帮助。谢谢。


XML

<config><throttle delay="20" unit="s" host="feeds.feedburner.com"/></config>

输出

host:"", unit:"", delay:0.000000


代码

package main


import (

    "encoding/xml"

    "fmt"

)


// Config allows for unmarshling of the remote configuration file.

type Config struct {

    XMLName    xml.Name     `xml:"config"`

    Throttlers []*Throttler `xml:"throttle"`

}


// Throttler stores the throttle information read from the configuration file.

type Throttler struct {

    host  string  `xml:"host,attr"`

    unit  string  `xml:"unit,attr"`

    delay float64 `xml:"delay,attr"`

}


func main() {


    data := `

        <config><throttle delay="20" unit="s" host="feeds.feedburner.com"/></config>

    `

    config := Config{}

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

    if err != nil {

        fmt.Printf("error: %config", err)

        return

    }

    thr := config.Throttlers[0]

    fmt.Println(fmt.Sprintf("host:%q, unit:%q, delay:%f", thr.host, thr.unit, thr.delay))


}


慕桂英4014372
浏览 198回答 1
1回答

蝴蝶刀刀

同样,该Throttler结构不导出其字段。因此,将结构更改为具有大写变量会使它们可访问。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go