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