首页 > 后端开发 > Golang > 如何在 Go 中解组具有未知属性的 XML 属性?

如何在 Go 中解组具有未知属性的 XML 属性?

DDD
发布: 2024-11-25 02:30:10
原创
198 人浏览过

How to Unmarshal XML Attributes with Unknown Attributes in Go?

在 Go 中解组具有未知属性的 XML 属性

在 Go 中,encoding/xml 包允许我们将 XML 数据编组和解组为来自 Go 数据结构。但是,默认情况下,它仅支持使用预先已知的固定属性来解组 XML 标签。

XML 中的动态属性

在某些情况下,XML 文档可能具有标签具有预先未知的动态属性。将此类 XML 数据解组到 Go 结构时,这可能会带来挑战。

解组动态属性

截至 2017 年末,Go 支持使用动态属性解组 XML 标签xml:",any,attr" 标签指令。该指令指示解组器将所有属性收集到 xml.Attr 切片中。

示例:

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)
}
登录后复制

当执行上述代码时,它将print:

{
  Attributes: [
    {Name:ATTR1 Value:VALUE1}
    {Name:ATTR2 Value:VALUE2}
  ]
}
登录后复制

注意:

xml:",any,attr" 指令不会从嵌套标签收集属性。如果您需要从嵌套标签收集属性,则需要创建自定义 XML 解码器。

以上是如何在 Go 中解组具有未知属性的 XML 属性?的详细内容。更多信息请关注PHP中文网其他相关文章!

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