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  }