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{}