在 Go 中使用属性和浮点值解组 XML 元素
使用属性和属性解组像所提供的 XML 元素一个浮点值,我们需要定义一个与 XML 结构相对应的 Go 结构体。
定义结构体
让我们考虑一下中给出的两个结构体定义问题:
第一个定义:
<code class="go">type ThingElem struct { Prop int `xml:"prop,attr"` Value float // ??? } type ThingWrapper struct { T ThingElem `xml:"thing"` }</code>
第二个定义:
<code class="go">type ThingElem struct { XMLName xml.Name `xml:"thing"` // Do I even need this? Prop int `xml:"prop,attr"` Value float // ??? }</code>
解决选项:
最终解决方案:
<code class="go">type Thing struct { Prop int `xml:"prop,attr"` Value float64 `xml:",chardata"` } type Root struct { Things []Thing `xml:"thing"` }</code>
在此解决方案中,Thing 结构表示单个 XML 元素,Root 结构体是一个容器,其中包含用于解组 XML 根元素的 Thing 结构体切片。
示例代码:
<code class="go">package main import ( "encoding/xml" "fmt" ) const xmlData = ` <root> <thing prop="1">1.23</thing> <thing prop="2">4.56</thing> </root> ` func main() { root := &Root{} if err := xml.Unmarshal([]byte(xmlData), root); err != nil { fmt.Println(err) return } fmt.Println(root.Things) }</code>
此代码演示了如何将 XML 元素解组为 Go 结构,包括从浮点值中删除空格。
以上是如何在 Go 中使用属性和浮点值解组 XML 元素?的详细内容。更多信息请关注PHP中文网其他相关文章!