github.com/Jeffail/benthos/v3@v3.65.0/internal/xml/package.go (about) 1 // Package xml is a temporary way to convert XML to JSON. This package is only 2 // necessary because github.com/clbanning/mxj has global configuration. If we 3 // are able to configure a decoder etc at the API level then this package can be 4 // removed. 5 package xml 6 7 import ( 8 "encoding/xml" 9 10 "github.com/clbanning/mxj/v2" 11 "golang.org/x/net/html/charset" 12 ) 13 14 func init() { 15 dec := xml.NewDecoder(nil) 16 dec.Strict = false 17 dec.CharsetReader = charset.NewReaderLabel 18 mxj.CustomDecoder = dec 19 } 20 21 // ToMap parses a byte slice as XML and returns a generic structure that can be 22 // serialized to JSON. 23 func ToMap(xmlBytes []byte, cast bool) (map[string]interface{}, error) { 24 root, err := mxj.NewMapXml(xmlBytes, cast) 25 if err != nil { 26 return nil, err 27 } 28 return map[string]interface{}(root), nil 29 }