为了账号安全,请及时绑定邮箱和手机立即绑定

使用 Go 分析 XML 无法从单个标记中获取值

使用 Go 分析 XML 无法从单个标记中获取值

Go
回首忆惘然 2022-09-26 19:38:07
这是我第一次尝试将 xml 包用于 Go,因此我认为我错过了一些东西。我有这个来自旧版 Web 服务的简单 XML:<?xml version="1.0" encoding="utf-8"?><boolean xmlns="http://foo.com.BARRSD/">true</boolean>我首先尝试定义此结构以与 xml.Unmarshal 方法一起使用:type Authenticate struct {    Boolean bool `xml:"boolean"`}但我相信它无法“找到”布尔值,因此布尔值中的结果值是false的初始化值。我通过将布尔值重新定义为字符串来检查情况是否如此,结果只是产生了一个空字符串。如果我进一步简化源 XML,我会得到相同的结果:<boolean>true</boolean>如何使用 xml.Unmarshal 解析出单个标记的值?
查看完整描述

1 回答

?
摇曳的蔷薇

TA贡献1793条经验 获得超6个赞

问题在于您的 Go 模型与 XML 结构不匹配。您的 Go 模型假定存在一个“身份验证”包装器标记,并且它将与此 XML 匹配:


<authenticate>

    <boolean xmlns="http://foo.com.BARRSD/">true</boolean>

</authenticate>

在 Go 游乐场试用。


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


type Authenticate struct {

    Boolean bool `xml:",chardata"`

}

在 Go 游乐场试用。


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


var b bool


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

    panic(err)

}

在Go游乐场上试试这个。


查看完整回答
反对 回复 2022-09-26
  • 1 回答
  • 0 关注
  • 54 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信