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