将 XML 元素解组为 Go 结构
考虑以下 XML 元素,其中包括一个属性和一个浮点值:
<thing prop="1"> 1.23 </thing> <thing prop="2"> 4.56 </thing>
要将这个 XML 解组到 Go 结构体中,可以使用两种设计方法:
使用 XMLName 属性:
<code class="go">type ThingElem struct { XMLName xml.Name `xml:"thing"` Prop int `xml:"prop,attr"` Value float64 // ??? }</code>
在这种情况下,XMLName 字段用于指定该结构表示“事物”XML 元素。但是,并不总是需要在结构体定义中包含此字段。
没有 XMLName 属性:
<code class="go">type ThingElem struct { Prop int `xml:"prop,attr"` Value float64 // ??? } type ThingWrapper struct { T ThingElem `xml:"thing"` }</code>
在此方法中,ThingElem 结构体在包装器结构 ThingWrapper。包装器结构体上的 xml:"thing" 标记指定 ThingElem 应表示“thing”XML 元素。
确定值字段类型:
定义时值字段,需要注意的是,XML 元素包含表示浮点值的字符数据(文本内容)。要正确解组,必须进行以下更改:
从值中删除空格:
XML 数据在浮点值中包含空格。在解组之前必须删除这些空格。
使用“,chardata”注释:
可以使用“,chardata”注释来引用 XML 标记的内容结构体字段定义:
<code class="go">Value float64 `xml:",chardata"`</code>
通过合并这些修改并确保 XML 数据被修剪掉空格,您可以使用上述任一设计方法成功地将给定的 XML 解组到 Go 结构体中。
以上是如何将带有属性和浮点值的 XML 元素解组到 Go 结构中?的详细内容。更多信息请关注PHP中文网其他相关文章!