首页 >后端开发 >Golang >如何在 Go 中编组期间动态设置 XML 元素名称?

如何在 Go 中编组期间动态设置 XML 元素名称?

Linda Hamilton
Linda Hamilton原创
2024-12-02 08:41:13339浏览

How Can I Dynamically Set XML Element Names During Marshaling in Go?

XML 编组中的动态元素名称

XML 文档通常包含结构相似但名称不同的元素。为了在 Go 中处理这个问题,您可能想知道是否可以在 XML 封送过程中动态修改元素名称。

结构体定义

让我们考虑以下 XML 文档,其中包含两个元素“PERSON”和“SENDER”包含相同的元素但具有不同的属性名称:

<PERSON>
  <ELEM1>...</ELEM1>
  <ELEM2>...</ELEM2>
  <ELEM3>...</ELEM3>
  <ELEM4>...</ELEM4>
</PERSON>

<SENDER>
  <ELEM1>...</ELEM1>
  <ELEM2>...</ELEM2>
  <ELEM3>...</ELEM3>
  <ELEM4>...</ELEM4>
</SENDER>

最初,您可以尝试定义这样的结构体,其中元素名称是静态设置的:

type Person struct {
    XMLName string `xml:"PERSON"` // Static element name
    E1 string `xml:"ELEM1"`
    E2 string `xml:"ELEM2"`
    E3 string `xml:"ELEM3"`
    E4 string `xml:"ELEM4"`
}

动态元素名称

要使元素名称动态化,您需要使用 xml.Name 类型而不是string:

type Person struct {
    XMLName xml.Name
    E1 string `xml:"ELEM1"`
    E2 string `xml:"ELEM2"`
    E3 string `xml:"ELEM3"`
    E4 string `xml:"ELEM4"`
}

现在,您可以使用 xml 的 Local 字段动态设置元素名称。Name:

person := Person{
    XMLName: xml.Name{Local: "Person"},
    // ... Set other fields
}

这允许您根据以下内容动态生成 XML 元素名称你的具体数据

示例

可以在 Go Playground 上找到一个工作示例:http://play.golang.org/p/bzSutFF9Bo。

通过这种技术,您可以创建处理具有不同名称的 XML 元素的结构,从而为 XML 处理提供灵活性和可扩展性代码。

以上是如何在 Go 中编组期间动态设置 XML 元素名称?的详细内容。更多信息请关注PHP中文网其他相关文章!

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