考慮以下結構:type MyStruct struct { Name string Meta map[string]interface{}}其中具有以下 UnmarshalXML 函數:func (m *MyStruct) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error { var v struct { XMLName xml.Name //`xml:"myStruct"` Name string `xml:"name"` Meta struct { Inner []byte `xml:",innerxml"` } `xml:"meta"` } err := d.DecodeElement(&v, &start) if err != nil { return err } m.Name = v.Name myMap := make(map[string]interface{}) // ... do the mxj magic here ... - temp := v.Meta.Inner prefix := "<meta>" postfix := "</meta>" str := prefix + string(temp) + postfix //fmt.Println(str) myMxjMap, err := mxj.NewMapXml([]byte(str)) myMap = myMxjMap // fill myMap //m.Meta = myMap m.Meta = myMap["meta"].(map[string]interface{}) return nil}我對這段代碼的問題是這些行:prefix := "<meta>"postfix := "</meta>"str := prefix + string(temp) + postfixmyMxjMap, err := mxj.NewMapXml([]byte(str))myMap = myMxjMap//m.Meta = myMapm.Meta = myMap["meta"].(map[string]interface{})我的問題是我如何正確使用 xml 注釋(、innerxml 等)、字段和結構,所以我不必在<meta></meta>之后手動預先/附加標簽來將整個 Meta 字段作為單個映射。完整的代碼示例在這里:http : //play.golang.org/p/Q4_tryubO6
- 1 回答
- 0 關注
- 207 瀏覽
添加回答
舉報
0/150
提交
取消