README
¶
goxml2json 
Go package that converts XML to JSON
Install
go get -u github.com/basgys/goxml2json
Importing
import github.com/basgys/goxml2json
Usage
Code example
package main
import (
"fmt"
"strings"
xj "github.com/basgys/goxml2json"
)
func main() {
// xml is an io.Reader
xml := strings.NewReader(`<?xml version="1.0" encoding="UTF-8"?><hello>world</hello>`)
json, err := xj.Convert(xml)
if err != nil {
panic("That's embarrassing...")
}
fmt.Println(json.String())
// {"hello": "world"}
}
Input
<?xml version="1.0" encoding="UTF-8"?>
<osm version="0.6" generator="CGImap 0.0.2">
<bounds minlat="54.0889580" minlon="12.2487570" maxlat="54.0913900" maxlon="12.2524800"/>
<foo>bar</foo>
</osm>
Output
{
"osm": {
"-version": 0.6,
"-generator": "CGImap 0.0.2",
"bounds": {
"-minlat": "54.0889580",
"-minlon": "12.2487570",
"-maxlat": "54.0913900",
"-maxlon": "12.2524800"
},
"foo": "bar"
}
}
With type conversion
package main
import (
"fmt"
"strings"
xj "github.com/basgys/goxml2json"
)
func main() {
// xml is an io.Reader
xml := strings.NewReader(`<?xml version="1.0" encoding="UTF-8"?><price>19.95</price>`)
json, err := xj.Convert(xml, xj.WithTypeConverter(xj.Float))
if err != nil {
panic("That's embarrassing...")
}
fmt.Println(json.String())
// {"price": 19.95}
}
Contributing
Feel free to contribute to this project if you want to fix/extend/improve it.
Contributors
TODO
- Categorise errors
- Option to prettify the JSON output
- Benchmark
Documentation
¶
Overview ¶
Package xml2json is an XML to JSON converter
Index ¶
- func Convert(r io.Reader, ps ...plugin) (*bytes.Buffer, error)
- func ExcludeAttributes(attrs []string) *excluder
- func NodePlugin(path string, plugin nodePlugin) nodeFormatter
- func ToArray() *arrayFormatter
- func WithAttrPrefix(prefix string) *attrPrefixer
- func WithContentPrefix(prefix string) *contentPrefixer
- func WithNodes(n ...nodeFormatter) *nodesFormatter
- func WithTypeConverter(ts ...JSType) *customTypeConverter
- type Decoder
- func (dec *Decoder) AddFormatters(formatters []nodeFormatter)
- func (dec *Decoder) Decode(root *Node) error
- func (dec *Decoder) DecodeWithCustomPrefixes(root *Node, contentPrefix string, attributePrefix string) error
- func (dec *Decoder) ExcludeAttributes(attrs []string)
- func (dec *Decoder) SetAttributePrefix(prefix string)
- func (dec *Decoder) SetContentPrefix(prefix string)
- type Encoder
- type JSType
- type Node
- type Nodes
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func ExcludeAttributes ¶
func ExcludeAttributes(attrs []string) *excluder
ExcludeAttributes excludes some xml attributes, for example, xmlns:xsi, xsi:noNamespaceSchemaLocation
func NodePlugin ¶
func NodePlugin(path string, plugin nodePlugin) nodeFormatter
func WithAttrPrefix ¶
func WithAttrPrefix(prefix string) *attrPrefixer
WithAttrPrefix appends the given prefix to the json output of xml attribute fields to preserve namespaces
func WithContentPrefix ¶
func WithContentPrefix(prefix string) *contentPrefixer
WithContentPrefix appends the given prefix to the json output of xml content fields to preserve namespaces
func WithNodes ¶
func WithNodes(n ...nodeFormatter) *nodesFormatter
WithNodes formats specific nodes
func WithTypeConverter ¶
func WithTypeConverter(ts ...JSType) *customTypeConverter
WithTypeConverter allows customized js type conversion behavior by passing in the desired JSTypes
Types ¶
type Decoder ¶
type Decoder struct {
// contains filtered or unexported fields
}
A Decoder reads and decodes XML objects from an input stream.
func NewDecoder ¶
NewDecoder returns a new decoder that reads from r.
func (*Decoder) AddFormatters ¶
func (dec *Decoder) AddFormatters(formatters []nodeFormatter)
func (*Decoder) Decode ¶
Decode reads the next JSON-encoded value from its input and stores it in the value pointed to by v.
func (*Decoder) DecodeWithCustomPrefixes ¶
func (*Decoder) ExcludeAttributes ¶
func (*Decoder) SetAttributePrefix ¶
func (*Decoder) SetContentPrefix ¶
type Encoder ¶
type Encoder struct {
// contains filtered or unexported fields
}
An Encoder writes JSON objects to an output stream.
func NewEncoder ¶
NewEncoder returns a new encoder that writes to w.
type JSType ¶
type JSType int
https://cswr.github.io/JsonSchema/spec/basic_types/ JSType is a JavaScript extracted from a string
func Str2JSType ¶
Str2JSType extract a JavaScript type from a string