Skip to content

Commit

Permalink
encoding/xml: remove Marshaler support
Browse files Browse the repository at this point in the history
Marshaler has a number of open areas that need
further thought (e.g. it doesn't handle attributes,
it's supposed to handle tag names internally but has
no information to do so, etc).

We're removing it now and will bring it back with an
interface that covers these aspects, after Go 1.

Related to issue 2771, but doesn't fix it.

R=golang-dev, rsc
CC=golang-dev
https://golang.org/cl/5574057
  • Loading branch information
niemeyer committed Jan 24, 2012
1 parent ddd67f2 commit 66599c4
Show file tree
Hide file tree
Showing 2 changed files with 0 additions and 33 deletions.
20 changes: 0 additions & 20 deletions src/pkg/encoding/xml/marshal.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,16 +21,8 @@ const (
Header = `<?xml version="1.0" encoding="UTF-8"?>` + "\n"
)

// A Marshaler can produce well-formatted XML representing its internal state.
type Marshaler interface {
MarshalXML() ([]byte, error)
}

// Marshal returns the XML encoding of v.
//
// If v implements Marshaler, then Marshal calls its MarshalXML method.
// Otherwise, Marshal uses the following procedure to create the XML.
//
// Marshal handles an array or slice by marshalling each of the elements.
// Marshal handles a pointer by marshalling the value it points at or, if the
// pointer is nil, by writing nothing. Marshal handles an interface value by
Expand Down Expand Up @@ -128,18 +120,6 @@ func (p *printer) marshalValue(val reflect.Value, finfo *fieldInfo) error {
kind := val.Kind()
typ := val.Type()

// Try Marshaler
if typ.NumMethod() > 0 {
if marshaler, ok := val.Interface().(Marshaler); ok {
bytes, err := marshaler.MarshalXML()
if err != nil {
return err
}
p.Write(bytes)
return nil
}
}

// Drill into pointers/interfaces
if kind == reflect.Ptr || kind == reflect.Interface {
if val.IsNil() {
Expand Down
13 changes: 0 additions & 13 deletions src/pkg/encoding/xml/marshal_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,12 +34,6 @@ type Ship struct {
secret string
}

type RawXML string

func (rx RawXML) MarshalXML() ([]byte, error) {
return []byte(rx), nil
}

type NamedType string

type Port struct {
Expand Down Expand Up @@ -298,13 +292,6 @@ var marshalTests = []struct {
UnmarshalOnly: true,
},

// Test marshaller interface
{
Value: RawXML("</>"),
ExpectXML: `</>`,
MarshalOnly: true,
},

// Test structs
{Value: &Port{Type: "ssl", Number: "443"}, ExpectXML: `<port type="ssl">443</port>`},
{Value: &Port{Number: "443"}, ExpectXML: `<port>443</port>`},
Expand Down

0 comments on commit 66599c4

Please sign in to comment.