一个简单的xml元素如何解组到golang结构?
假设以下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属性的用法使我感到困惑。什么时候应该将其放置在结构中,何时将其作为标签包装?
回答:
在下面,您可以找到解组给定数据的代码。
- 在删除空格之前,无法正确解组浮点值。
- 可以使用“,chardata”注释引用标记的内容。
- 您无需
xml.Name
在结构中指定字段,只要它不模糊应使用哪种结构即可。
package mainimport (
"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)
}
以上是 一个简单的xml元素如何解组到golang结构? 的全部内容, 来源链接: utcz.com/qa/397424.html