小编Tra*_*y J的帖子

使用 Go 解组嵌套的 xml

我有以下代码片段,我一直在努力使其工作。我到处寻找解决方案,但我发现的所有解决方案似乎都不起作用。

我的xml.Unmarshal命令映射似乎有问题,因为它与嵌套字段有关。下面的代码用于检索名为 的第一个值,它位于unitxml 代码的顶层。

其他两个字段为零,它们嵌套了两级深。这意味着结构设置不正确。这是代码。

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)
}
Run Code Online (Sandbox Code Playgroud)

这是输出:

Wh 0.000000 0
Run Code Online (Sandbox Code Playgroud)

xml nested go unmarshalling

2
推荐指数
1
解决办法
6382
查看次数

标签 统计

go ×1

nested ×1

unmarshalling ×1

xml ×1