将当前XML元素中的属性解码为匿名结构的工作原理是:
package main
import (
"encoding/xml"
"fmt"
)
type Attrs struct {
Attr1 int `xml:"attr1,attr"`
Attr2 int `xml:"attr2,attr"`
}
type Element struct {
Attrs
}
func main() {
data := `<element attr1="1" attr2="2"></element>`
v := Element{}
err := xml.Unmarshal([]byte(data), &v)
if err != nil {
fmt.Printf("error: %v", err)
return
}
fmt.Printf("%#v\n", v)
}
这将按预期打印
main.Element{Attrs:main.Attrs{Attr1:1, Attr2:2}}
。如果为匿名struct成员指定了名称,则不会解码
v.Attr1
和v.Attr2
。type Element struct {
AttrGroup Attrs
}
在这种情况下,在struct成员上使用的正确标记是什么?
编辑:Playground version
最佳答案
为什么不这样做呢?除了复杂性,我看不到命名结构可以为您带来什么。
(Playground)
package main
import (
"encoding/xml"
"fmt"
)
type Element struct {
Attr1 int `xml:"attr1,attr"`
Attr2 int `xml:"attr2,attr"`
}
func main() {
data := `<element attr1="1" attr2="2"></element>`
v := Element{}
err := xml.Unmarshal([]byte(data), &v)
if err != nil {
fmt.Printf("error: %v", err)
return
}
fmt.Printf("%#v\n", v)
}
哪些打印品
main.Element{Attr1:1, Attr2:2}
关于go - 将XML属性解码为命名的嵌套结构,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16059497/