Sök…


Anmärkningar

Även om många användningar av paketet encoding/xml inkluderar marskalkning och avmarkering till en Go- struct , är det värt att notera att detta inte är en direkt kartläggning. I paketdokumentationen anges:

Kartläggning mellan XML-element och datastrukturer är naturligtvis felaktig: ett XML-element är en ordningsberoende samling av anonyma värden, medan en datastruktur är en ordningsoberoende samling av namngivna värden.

För enkla, oordnade, nyckelvärdenspar kan det vara bättre att använda en annan kodning som Gobs eller JSON . För beställda data eller händelsebaserade dataströmmar kan XML vara det bästa valet.

Grundläggande avkodning / avmarkering av kapslade element med data

XML-element bo ofta, har data i attribut och / eller som teckenuppgifter. Sättet att fånga upp dessa data är att använda ,attr respektive ,chardata för dessa fall.

var doc = `
<parent>
  <child1 attr1="attribute one"/>
  <child2>and some cdata</child2>
</parent>
`

type parent struct {
    Child1 child1 `xml:"child1"`
    Child2 child2 `xml:"child2"`
}

type child1 struct {
    Attr1 string `xml:"attr1,attr"`
}

type child2 struct {
    Cdata1 string `xml:",cdata"`
}

func main() {
    var obj parent
    err := xml.Unmarshal([]byte(doc), &obj)
    if err != nil {
        log.Fatal(err)
    }

    fmt.Println(obj.Child2.Cdata1)

}

Playground



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow