这是我第一次尝试将 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游乐场上试试这个。
- 1 回答
- 0 关注
- 54 浏览
添加回答
举报
0/150
提交
取消