在 Go 中,使用动态属性解组 XML 可能是一个挑战。然而,随着最近问题 3633 的解决,现在有一种简单有效的方法来处理这种情况。
传统上,在 Go 中解组 XML 时,您会定义具有特定字段的结构以匹配预期的 XML 元素。但是,当您遇到带有无法预测属性的 XML 标签时会发生什么?
解决方案在于使用“,any,attr” Go 结构定义中的“标记。此标记指示 XML 解组器将指定元素的所有属性收集到 xml.Attr 结构的切片中。
考虑以下 XML 片段:
<TAG ATTR1="VALUE1" ATTR2="VALUE2" />
要将这个 XML 解组到 Go 结构中,您可以使用以下命令代码:
package main import ( "encoding/xml" "fmt" ) func main() { var v struct { Attributes []xml.Attr `xml:",any,attr"` } data := `<TAG ATTR1="VALUE1" ATTR2="VALUE2" />` err := xml.Unmarshal([]byte(data), &v) if err != nil { panic(err) } fmt.Println(v) }
运行此代码时,v 结构将填充以下数据:
{[]xml.Attr{ {Name: {Local: "ATTR1"}, Value: "VALUE1"}, {Name: {Local: "ATTR2"}, Value: "VALUE2"}, }}
Attributes 切片包含两个 xml.Attr 结构,每个代表一个XML 标签中的属性。
“,any,attr” tag 提供了一种强大而灵活的方法来在 Go 中使用动态属性来解组 XML 标签。通过利用此功能,您可以轻松处理不可预测的 XML 结构并将所需的数据提取到自定义结构中。
以上是如何在 Go 中使用动态属性解组 XML?的详细内容。更多信息请关注PHP中文网其他相关文章!