Skip to content

mantyr/xmlutils

Repository files navigation

XML utils

Build Status GoDoc Go Report Card Software License

This don't stable version

Implementation features

  • Ignore prefix in xml tag

    Now xml:"prefix:name" is interpreted by Unmarshal as xml:"name"

    This is necessary for the same behavior of Unmarshal/Marshal with prefix tags

  • Add support for xml.Unmarshaler

    Now there is no need to change all implementations of xml.Unmarshaler to xmlutils.Unmarshaler

  • Add forwarding xmlutils.Decoder to xml.Unmarshaler

    Now, regardless of how Unmarshal was launched (from xml or from xmlutils), you have the opportunity to use xmlutils where necessary

  • Move all existing structures from the fork back to encoding/xml

    Now this is implemented for most structures (such as xml.StartElement, xml.Name, xml.Attr, xml.Token and others), but I do not exclude that there is something else that can be transferred

Forwarding xmlutils.Decoder via the xml.UnmarshalXML interface

package main

import (
	"fmt"
	"encoding/xml"

	"github.com/mantyr/xmlutils"
)

type A struct {
	B struct {
		Data string `xml:"prefix:data"`
	}
}

func (a *A) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
	return xmlutils.NewTokenDecoder(d, start).Decode(&a.B)
}

func main() {
	data := `<a><prefix:data>test</prefix:data></a>`
	a := &A{}
	err := xml.Unmarshal([]byte(data), &a)
	fmt.Println(err)
	fmt.Println(a.B.Data)
	// Output:
	// <nil>
	// test
}

Installation

$ go get -u github.com/mantyr/xmlutils

Author

Oleg Shevelev

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages