這是我第一次嘗試將 xml 包用于 Go,因此我認(rèn)為我錯(cuò)過了一些東西。我有這個(gè)來自舊版 Web 服務(wù)的簡(jiǎn)單 XML:<?xml version="1.0" encoding="utf-8"?><boolean xmlns="http://foo.com.BARRSD/">true</boolean>我首先嘗試定義此結(jié)構(gòu)以與 xml.Unmarshal 方法一起使用:type Authenticate struct { Boolean bool `xml:"boolean"`}但我相信它無法“找到”布爾值,因此布爾值中的結(jié)果值是false的初始化值。我通過將布爾值重新定義為字符串來檢查情況是否如此,結(jié)果只是產(chǎn)生了一個(gè)空字符串。如果我進(jìn)一步簡(jiǎn)化源 XML,我會(huì)得到相同的結(jié)果:<boolean>true</boolean>如何使用 xml.Unmarshal 解析出單個(gè)標(biāo)記的值?
1 回答

搖曳的薔薇
TA貢獻(xiàn)1793條經(jīng)驗(yàn) 獲得超6個(gè)贊
問題在于您的 Go 模型與 XML 結(jié)構(gòu)不匹配。您的 Go 模型假定存在一個(gè)“身份驗(yàn)證”包裝器標(biāo)記,并且它將與此 XML 匹配:
<authenticate>
<boolean xmlns="http://foo.com.BARRSD/">true</boolean>
</authenticate>
在 Go 游樂場(chǎng)試用。
由于您沒有包裝標(biāo)記,因此可以使用 XML 標(biāo)記選項(xiàng)來使用字段的內(nèi)部文本:,chardataBoolean
type Authenticate struct {
Boolean bool `xml:",chardata"`
}
在 Go 游樂場(chǎng)試用。
另請(qǐng)注意,在此特定示例中,您還可以使用單個(gè)變量:bool
var b bool
if err := xml.Unmarshal([]byte(src), &b); err != nil {
panic(err)
}
在Go游樂場(chǎng)上試試這個(gè)。
- 1 回答
- 0 關(guān)注
- 73 瀏覽
添加回答
舉報(bào)
0/150
提交
取消