--- 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(`<a xmlns="%s" xmlns:stream="%s">`,
+ 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 {