为什么简单 XML 解析器不填充结构

Why simple XML parser doesn't fill struct

尝试实现一个简单的 XML 解析,下面的代码没有按预期工作。
它只是 returns 一个 {[]}Results,而它应该填充它。

为什么?...

package main
import "fmt"
import "encoding/xml"
import "bytes"

type Name struct {
    Name    string  `xml:"NAME"`
}
type Results struct {
    Names   []Name `xml:"RESULTS"`
}

func main() {
    data := []byte(`
<?xml version="1.0" encoding="UTF-8"?>
<RESULTS>
 <NAME>Apple</NAME>
 <NAME>Banana</NAME>
</RESULTS>
`)
    var r Results
    decoder := xml.NewDecoder(bytes.NewBuffer(data))
    unError := decoder.Decode(&r)
    if unError != nil {
        fmt.Println("XML Unmarshaling error:", unError )
    }else{
        fmt.Printf("%v", r)
    }
}

在 Playground 和本地 (go1.17.2) 中尝试过。

我建议您使用像 xmltogo 这样的在线结构生成器,因此请将其用作:

type RESULTS struct {
    XMLName xml.Name `xml:"RESULTS"`
    Text    string   `xml:",chardata"`
    NAME    []string `xml:"NAME"`
} 

Try on playground