首页 > 后端开发 > Golang > 正文

如何在 Go 中使用动态属性解组 XML?

Patricia Arquette
发布: 2024-11-20 11:44:04
原创
229 人浏览过

How Can I Unmarshal XML with Dynamic Attributes in Go?

在 Go 中使用动态属性解组 XML

在 Go 中,使用动态属性解组 XML 可能是一个挑战。然而,随着最近问题 3633 的解决,现在有一种简单有效的方法来处理这种情况。

问题:未知属性

传统上,在 Go 中解组 XML 时,您会定义具有特定字段的结构以匹配预期的 XML 元素。但是,当您遇到带有无法预测属性的 XML 标签时会发生什么?

解决方案:“,any,attr”标签

解决方案在于使用“,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中文网其他相关文章!

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