猿问

将 XML 属性解组为命名的嵌套结构

将当前 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}}按预期打印。


如果匿名结构成员被赋予一个名字,v.Attr1并且v.Attr2没有被解组。


type Element struct {

    AttrGroup Attrs

}

在这种情况下,在 struct 成员上使用的正确标签是什么?


ABOUTYOU
浏览 198回答 1
1回答

猛跑小猪

为什么不这样做呢?除了复杂性之外,我看不到命名结构会给您带来什么。package mainimport (&nbsp; &nbsp; "encoding/xml"&nbsp; &nbsp; "fmt")type Element struct {&nbsp; &nbsp; Attr1 int `xml:"attr1,attr"`&nbsp; &nbsp; Attr2 int `xml:"attr2,attr"`}func main() {&nbsp; &nbsp; data := `<element attr1="1" attr2="2"></element>`&nbsp; &nbsp; v := Element{}&nbsp; &nbsp; err := xml.Unmarshal([]byte(data), &v)&nbsp; &nbsp; if err != nil {&nbsp; &nbsp; &nbsp; &nbsp; fmt.Printf("error: %v", err)&nbsp; &nbsp; &nbsp; &nbsp; return&nbsp; &nbsp; }&nbsp; &nbsp; fmt.Printf("%#v\n", v)}哪个打印main.Element{Attr1:1, Attr2:2}
随时随地看视频慕课网APP

相关分类

Go
我要回答