首页 >后端开发 >Golang >如何在 Go 中将映射编组为 XML:结构是唯一的方法吗?

如何在 Go 中将映射编组为 XML:结构是唯一的方法吗?

Barbara Streisand
Barbara Streisand原创
2024-10-29 18:31:02369浏览

How to Marshal a Map to XML in Go: Is a Struct the Only Way?

Go 中将映射编组为 XML

尝试将映射编组为 XML 数据时遇到错误?请查看本文以获取解决方案。

流行的 JSON 到 XML 转换因利用地图而闻名。然而,当涉及到 XML 时,情况就不同了。您可能会想知道为什么地图在这两种情况下的行为方式不同。使用 Struct 真的是这里唯一可行的解​​决方案吗?

解决方案

使用 xml.Marshaler 类型找到了一个出色的解决方案。它的工作原理如下:

  1. 定义 StringMap 类型: 创建一个自定义类型来表示您的地图,称为 StringMap。此类型将具有 map[string]string 底层结构。
  2. 实现 MarshalXML 方法: StringMap 应该实现 xml.Marshaler 接口的 MarshalXML 方法。此方法将映射转换为 XML。
  3. 对映射值进行编码: 循环遍历映射的键值对,为每个键和 xml.StartElement 标记>xml.CharData 每个值的标记。
  4. 刷新并返回: 要写入 XML 标记并刷新缓冲区,请使用编码器的 EncodeTokenFlush 方法。
创建实现

xml.Marshaler 的自定义 StringMap 类型后,将映射编组到 XML 就非常简单:

<code class="go">output, err := xml.MarshalIndent(data, "", "  ")</code>
此方法提供了一种在 XML 编组中处理映射的便捷方法,无需求助于结构。

以上是如何在 Go 中将映射编组为 XML:结构是唯一的方法吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

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