diff -r bee6cc131798 -r a058e33c1666 stream.go --- a/stream.go Sun Dec 16 23:06:54 2012 -0700 +++ b/stream.go Fri Dec 28 17:07:20 2012 -0700 @@ -87,9 +87,13 @@ } defer close(ch) - p := xml.NewDecoder(r) - p.Context.Map[""] = NsClient - p.Context.Map["stream"] = NsStream + // This trick loads our namespaces into the parser. + nsstr := fmt.Sprintf(``, + NsClient, NsStream) + nsrdr := strings.NewReader(nsstr) + p := xml.NewDecoder(io.MultiReader(nsrdr, r)) + p.Token() + Loop: for { // Sniff the next token on the stream. @@ -206,8 +210,6 @@ }(w) enc := xml.NewEncoder(w) - enc.Context.Map[NsClient] = "" - enc.Context.Map[NsStream] = "stream" for obj := range ch { if st, ok := obj.(*stream); ok {