This don't stable version
-
Игнорировать prefix в xml tag
Теперь
xml:"prefix:name"
воспринимается в Unmarshal какxml:"name"
Это нужно для одинакового поведения Unmarshal/Marshal с префиксными тегами
-
Добавить поддержку xml.Unmarshaler
Теперь нет необходимости править все реализации xml.Unmarshaler на xmlutils.Unmarshaler
-
Добавить проброс xmlutils.Decoder в xml.Unmarshaler
Теперь в не зависимости от того как был запущен Unmarshal (от xml или от xmlutils) у вас есть возможность использовать xmlutils там где это нужно
-
Вынести все имеющиеся структуры из форка обратно в encoding/xml
Сейчас это реализовано для большинства структур (такие как xml.StartElement, xml.Name, xml.Attr, xml.Token и прочие), но не исключаю что ещё есть что можно перенести
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
}
$ go get -u github.com/mantyr/xmlutils