登录
首页 >  Golang >  Go问答

使用Go解析XML无法从单个标签中获取值

来源:stackoverflow

时间:2024-03-17 10:57:27 281浏览 收藏

首次使用 Go 的 xml 包时,在解析单个标签的值时可能会遇到困难。要解决此问题,需要确保 Go 模型与 XML 结构匹配。如果不存在包装标签,可以使用 ,chardata XML 标记选项来使用标签内部文本。此外,对于仅包含单个布尔值的 XML,可以使用单个 bool 变量来解析值。

问题内容

这是我第一次尝试使用 go 的 xml 包,所以我认为我遗漏了一些东西。我从旧版 web 服务中获得了这个简单的 xml:


true

我首先尝试定义此结构以与 xml.unmarshal 方法一起使用:

type authenticate struct {
    boolean bool `xml:"boolean"`
}

但我相信它无法“找到”boolean,因此 boolean 中的结果值是 false 的初始化值。我通过将布尔值重新定义为字符串来理智地检查了情况,结果只是得到一个空字符串。如果进一步简化源 xml,我会得到相同的结果:

true

如何使用 xml.unmarshal 解析单个标记的值?


正确答案


问题是您的 go 模型与 xml 结构不匹配。您的 go 模型假设有一个“authenticate”包装标签,并且它将与此 xml 匹配:


    true

Go Playground 上尝试一下。

由于您没有包装器标记,因此您可以使用 ,chardata xml 标记选项来使用 boolean 字段的内部文本:

type authenticate struct {
    boolean bool `xml:",chardata"`
}

Go Playground 上尝试一下。

另请注意,在此特定示例中,您还可以使用单个 bool 变量:

var b bool

if err := xml.Unmarshal([]byte(src), &b); err != nil {
    panic(err)
}

拨打 Go Playground 试试这个。

以上就是《使用Go解析XML无法从单个标签中获取值》的详细内容,更多关于的资料请关注golang学习网公众号!

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