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

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

Barbara Streisand
发布: 2024-10-29 18:31:02
原创
346 人浏览过

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板