[英]GOLANG xml decoding
在Go中,我试图将XML解码为“ fileRetriever”结构。 我只关心文件名:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<FileRetriever>
<FileList>
<File name="Name1" />
<File name="Name2" />
</FileList>
</FileRetriever>
我认为该代码段很接近,但是我似乎看不到哪里出错了。 它不会产生任何错误,但是会产生一个零长度的文件名列表:
import (
"encoding/base64"
"encoding/xml"
"fmt"
"net/http"
"golang.org/x/net/html/charset"
)
type fileRetriever struct {
Files []file `xml:"FileRetriever>FileList>File"`
}
type file struct {
Name string `xml:"name,attr"`
}
func Main(){
retrieve()
}
func retrieve()(retriever *fileRetriever){
req := ... //set up http.NewRequest()
client := &http.Client{}
rsp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
defer rsp.Body.Close()
decoder := xml.NewDecoder(rsp.Body)
decoder.CharsetReader = charset.NewReaderLabel
retriever = &fileRetriever{}
err = decoder.Decode(&retriever)
if err != nil {
fmt.Println(err)
}
return retriever, xTidx
}
根元素会自动解码为传递给Decode
的值,因此您无需在“ Files
字段标签中提及它。
因此,只需将xml:"FileRetriever>FileList>File"
更改为xml:"FileList>File"
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.