gitee.com/h79/goutils@v1.22.10/common/xml/xml.go (about) 1 package xml 2 3 import ( 4 "encoding/xml" 5 "gitee.com/h79/goutils/common/file" 6 "gitee.com/h79/goutils/common/result" 7 "os" 8 ) 9 10 func Write(name string, data interface{}, perm os.FileMode) error { 11 return file.WriteFileName(name, perm, func(w *os.File) error { 12 enc := xml.NewEncoder(w) 13 if err := enc.Encode(data); err != nil { 14 return result.Errorf(result.ErrXml, "Encode %s xml failed,err: %v", name, err).Log() 15 } 16 return nil 17 }) 18 } 19 20 func Read(name string, data interface{}) error { 21 _, err := file.ReadFileName(name, func(r *os.File) error { 22 dec := xml.NewDecoder(r) 23 if err := dec.Decode(data); err != nil { 24 return result.Errorf(result.ErrXml, "Decode %s xml failed,err: %v", name, err).Log() 25 } 26 return nil 27 }) 28 return err 29 } 30 31 type coder struct { 32 } 33 34 func (j *coder) Unmarshal(content []byte, v interface{}) error { 35 return xml.Unmarshal(content, v) 36 } 37 38 func (j *coder) Marshal(v interface{}) ([]byte, error) { 39 return xml.Marshal(v) 40 } 41 42 var DefaultCoder = &coder{}