...
1
2
3
4 package main
5
6 import (
7 "encoding/xml"
8 "fmt"
9
10 "github.com/clbanning/mxj"
11 )
12
13 func main() {
14 type decodedXml struct {
15 XMLName xml.Name `xml:"tag" binding:"required"`
16 SomeAttr string `xml:"someattr,attr"`
17 }
18
19 data := []byte(`
20 -==sddsfdqsdqsdsqd
21 A BUNCH OF INVALID DATA IN THE XML FILE HAHAH
22 --SEPARATERUFCIFHEIR
23 Content-Type: text/plain
24
25 <tag someattr="myvalue"></tag>
26 --SEPARATERUFCIFHEIR--
27 {"hello": "world"}
28 `)
29
30
31 mxj.SetAttrPrefix("")
32
33
34 m, err := mxj.NewMapXml(data)
35 if err != nil {
36 fmt.Println("err:", err)
37 return
38 }
39
40 if _, ok := m["tag"]; !ok {
41 fmt.Println("no tag doc ...")
42 return
43 }
44 fmt.Printf("%v\n", m)
45
46
47 attrval, err := m.ValueForPath("tag.someattr")
48 if err != nil {
49 fmt.Println("err:", err)
50 return
51 }
52
53
54 val := decodedXml{
55 XMLName: xml.Name{"", "tag"},
56 SomeAttr: attrval.(string)}
57 fmt.Printf("%v\n", val)
58 }
59
View as plain text