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

这是我第一次尝试将 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 解析出单个标记的值?


回首忆惘然
浏览 55回答 1
1回答

摇曳的蔷薇

问题在于您的 Go 模型与 XML 结构不匹配。您的 Go 模型假定存在一个“身份验证”包装器标记,并且它将与此 XML 匹配:<authenticate>&nbsp; &nbsp; <boolean xmlns="http://foo.com.BARRSD/">true</boolean></authenticate>在 Go 游乐场试用。由于您没有包装标记,因此可以使用 XML 标记选项来使用字段的内部文本:,chardataBooleantype Authenticate struct {&nbsp; &nbsp; Boolean bool `xml:",chardata"`}在 Go 游乐场试用。另请注意,在此特定示例中,您还可以使用单个变量:boolvar b boolif err := xml.Unmarshal([]byte(src), &b); err != nil {&nbsp; &nbsp; panic(err)}在Go游乐场上试试这个。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go