首页  >  文章  >  后端开发  >  如何将带有属性和浮点值的 XML 元素解组到 Go 结构中?

如何将带有属性和浮点值的 XML 元素解组到 Go 结构中?

Susan Sarandon
Susan Sarandon原创
2024-10-24 02:40:29869浏览

How to Unmarshal XML Elements with Attributes and Floating-Point Values into Go Structs?

将 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn