diff -r 9db2758c3372 src/pkg/encoding/xml/marshal.go --- a/src/pkg/encoding/xml/marshal.go Thu Apr 26 13:32:05 2012 -0700 +++ b/src/pkg/encoding/xml/marshal.go Fri Jun 08 10:56:26 2012 -0700 @@ -273,7 +273,7 @@ s := parentStack{printer: p} for i := range tinfo.fields { finfo := &tinfo.fields[i] - if finfo.flags&(fAttr|fAny) != 0 { + if finfo.flags&(fAttr) != 0 { continue } vf := val.FieldByIndex(finfo.idx) diff -r 9db2758c3372 src/pkg/encoding/xml/marshal_test.go --- a/src/pkg/encoding/xml/marshal_test.go Thu Apr 26 13:32:05 2012 -0700 +++ b/src/pkg/encoding/xml/marshal_test.go Fri Jun 08 10:56:26 2012 -0700 @@ -185,6 +185,11 @@ AnyField AnyHolder `xml:",any"` } +type AnyList struct { + XMLName struct{} `xml:"l"` + Items []AnyHolder `xml:",any"` +} + type AnyHolder struct { XMLName Name XML string `xml:",innerxml"` @@ -652,9 +657,16 @@ UnmarshalOnly: true, }, { - Value: &AnyTest{Nested: "known", AnyField: AnyHolder{XML: ""}}, - ExpectXML: `known`, - MarshalOnly: true, + ExpectXML: `zaphodheart of gold`, + Value: &AnyList{ + Items: []AnyHolder{{ + XMLName: Name{Local: "name"}, + XML: "zaphod", + }, { + XMLName: Name{Local: "vessel"}, + XML: "heart of gold", + }}, + }, }, // Test recursive types.