登录
首页 >  Golang >  Go问答

将 XML 格式的子数组转换为 Go 结构数组

来源:stackoverflow

时间:2024-02-29 14:18:24 211浏览 收藏

本篇文章向大家介绍《将 XML 格式的子数组转换为 Go 结构数组》,主要包括,具有一定的参考价值,需要的朋友可以参考一下。

问题内容

我有一个像这样的 xml 对象:




    
    

现在我想将其解析为一个如下所示的 go 结构:

type entry struct {
    xmlname xml.name `xml:"entry"`
    name    string   `xml:"name,attr"`
}

type directory struct {
    xmlname xml.name `xml:"directory"`
    count   string   `xml:"count,attr"`
    entries []entry  `xml:"entries"`
}

如您所见,我希望 entries 成为 directory 的直接子级。这不起作用,directory.entries 始终为空。

但是,当我添加某种像这样的代理对象时,它确实有效(从此处找到的 xml->go 结构转换器获取此对象):

type Directory struct {
    XMLName xml.Name `xml:"directory"`
    Text    string   `xml:",chardata"`
    Count   string   `xml:"count,attr"`
    Entries struct {
        Text  string `xml:",chardata"`
        Entry []struct {
            Text string `xml:",chardata"`
            Name string `xml:"name,attr"`
        } `xml:"entry"`
    } `xml:"entries"`
}

在此版本中,数组被填充,我可以通过 directory.entries.entry[i] 访问索引 i 处的给定条目。

如何省略此处不必要的对象并直接通过 directory.entries[i] 访问条目?是否可以不构建自定义(un)编组器?


正确答案


您在条目集合的 xml 定义中缺少parent>child>plant 标记 >

Entries []Entry  `xml:"entries>entry"`

去玩:https://go.dev/play/p/4szt8-s8bff

本篇关于《将 XML 格式的子数组转换为 Go 结构数组》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>