gpt4 book ai didi

xml - GOLANG xml解码

转载 作者:IT王子 更新时间:2023-10-29 02:32:40 24 4
gpt4 key购买 nike

在 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"

关于xml - GOLANG xml解码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43484446/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com