php小編香蕉為您介紹在Go語言中解組編號的XML標籤的方法。 Go語言提供了xml.Unmarshal函數,它可以將XML資料解組為Go結構體。在解組時,我們可以使用標籤來指定XML元素與結構體欄位之間的對應關係。透過在結構體欄位的標籤中加入`xml:"tagname"`,我們可以將XML中的特定標籤與結構體欄位關聯起來,實現自動的解組操作。這種方法簡單且高效,使得在Go語言中處理XML資料變得輕鬆愉快。
我嘗試了很多結構來嘗試解組此 xml,但我無法真正弄清楚:
package main import ( "bytes" "encoding/xml" "fmt" ) type SettingContainer struct { XMLName xml.Name `xml:"Settings"` Settings []Setting `xml:",any"` } type Setting struct { XMLName xml.Name `xml:",any"` SettingRegisters []SettingRegister `xml:",any"` } type SettingRegister struct { XMLName xml.Name `xml:",any"` Value string `xml:"value,attr"` } func main() { var xmlData = bytes.NewBufferString(` <Settings> <Setting0> <Setting0_register value="0x20" /> <Setting0ArbitraryName value="0x0" /> </Setting0> <Setting1> <Setting1_register value="0x60" /> <Setting1WhateverEnable value="0x0" /> </Setting1> <Setting2> <Setting2_register value="0x80" /> <Setting2blahblah value="0x1" /> </Setting2> <Setting4> <Setting4_register value="0x2fffff8" /> <Setting4ThisCanBeAnything value="0x0" /> </Setting4> </Settings>`) var s []SettingContainer xml.Unmarshal(xmlData.Bytes(), &s) for _, i := range s { fmt.Println(i) } }
我就是無法讓它列印任何東西。我實際需要的欄位是settingn_register 的值attr 以及settingn 標籤名稱。我怎麼能正確地將 xml 解組到這些字段中?我正在考慮製作一個自訂解組函數,但我真的找不到如何正確製作一個函數。我從這個 xml 中只能得到“settings”標籤名稱。
從xmlname
欄位中刪除xml:",any"
標記(這會導致解碼器嘗試將額外的子元素對應到此欄位),並將其解組為settingcontainer
而不是[]settingcontainer
作為xml文件只能有一個根元素。此處的工作範例:https://www.php.cn/link/d2949eb6aaa490c835219e945ff37dad
type SettingContainer struct { XMLName xml.Name `xml:"Settings"` Settings []Setting `xml:",any"` } type Setting struct { XMLName xml.Name SettingRegisters []SettingRegister `xml:",any"` } type SettingRegister struct { XMLName xml.Name Value string `xml:"value,attr"` } func main() { var xmlData = bytes.NewBufferString(`...`) var s SettingContainer xml.Unmarshal(xmlData.Bytes(), &s) fmt.Println(s) }
以上是在 Go 中解組編號的 XML 標籤的詳細內容。更多資訊請關注PHP中文網其他相關文章!