我try 了相当多的 struct 来try 对该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以及SettingN标记名的值attr.我如何才能将XML正确地解组到这些字段中呢?我正在考虑制作一个定制的解组函数,但我真的找不到如何正确地制作一个.我能从这个XML中得到的只有"设置"标记名.