假设以下xml元素具有属性和浮点值:
<thing prop="1"> 1.23 </thing> <thing prop="2"> 4.56 </thing>
为了解组它,我应该如何定义我的结构?
type ThingElem struct { Prop int `xml:"prop,attr"` Value float // ??? } type ThingWrapper struct { T ThingElem `xml:"thing"` } // VS type ThingElem struct { XMLName xml.Name `xml:"thing"` // Do I even need this? Prop int `xml:"prop,attr"` Value float // ??? }
XMLName属性的用法使我感到困惑。什么时候应该将其放置在结构中,何时将其作为标签包装?
在下面,您可以找到解组给定数据的代码。
xml.Name
package main import ( "encoding/xml" "fmt" ) type Root struct { Things []Thing `xml:"thing"` } type Thing struct { Prop int `xml:"prop,attr"` Value float64 `xml:",chardata"` } func main() { data := ` <root> <thing prop="1">1.23</thing> <thing prop="2">4.56</thing> </root> ` thing := &Root{} err := xml.Unmarshal([]byte(data), thing) if err != nil { fmt.Println(err) return } fmt.Println(thing) }