123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- package xml
- // writer interface used by the xml encoder to write an encoded xml
- // document in a writer.
- type writer interface {
- // Write takes in a byte slice and returns number of bytes written and error
- Write(p []byte) (n int, err error)
- // WriteRune takes in a rune and returns number of bytes written and error
- WriteRune(r rune) (n int, err error)
- // WriteString takes in a string and returns number of bytes written and error
- WriteString(s string) (n int, err error)
- // String method returns a string
- String() string
- // Bytes return a byte slice.
- Bytes() []byte
- }
- // Encoder is an XML encoder that supports construction of XML values
- // using methods. The encoder takes in a writer and maintains a scratch buffer.
- type Encoder struct {
- w writer
- scratch *[]byte
- }
- // NewEncoder returns an XML encoder
- func NewEncoder(w writer) *Encoder {
- scratch := make([]byte, 64)
- return &Encoder{w: w, scratch: &scratch}
- }
- // String returns the string output of the XML encoder
- func (e Encoder) String() string {
- return e.w.String()
- }
- // Bytes returns the []byte slice of the XML encoder
- func (e Encoder) Bytes() []byte {
- return e.w.Bytes()
- }
- // RootElement builds a root element encoding
- // It writes it's start element tag. The value should be closed.
- func (e Encoder) RootElement(element StartElement) Value {
- return newValue(e.w, e.scratch, element)
- }
|