我有下面的代码片段,我一直在努力使它工作。我已经到处搜索解决方案,但我找到的所有方法都似乎不起作用。
看来我的映射对于
另外两个字段显示为零,并且它们嵌套了两层。这意味着结构设置不正确。以下是代码。
看来我的映射对于
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
datevalues
字段未导出,因此xml包无法看到它。 - JimB