diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/encoding/xml/marshal.go | 2 | ||||
| -rw-r--r-- | src/encoding/xml/marshal_test.go | 2 | ||||
| -rw-r--r-- | src/encoding/xml/xml.go | 10 |
3 files changed, 12 insertions, 2 deletions
diff --git a/src/encoding/xml/marshal.go b/src/encoding/xml/marshal.go index a0e2058d89..d0899c0fa6 100644 --- a/src/encoding/xml/marshal.go +++ b/src/encoding/xml/marshal.go @@ -209,7 +209,7 @@ func (enc *Encoder) EncodeToken(t Token) error { return err } case CharData: - EscapeText(p, t) + escapeText(p, t, false) case Comment: if bytes.Contains(t, endComment) { return fmt.Errorf("xml: EncodeToken of Comment containing --> marker") diff --git a/src/encoding/xml/marshal_test.go b/src/encoding/xml/marshal_test.go index 8362421db7..5e9718c20c 100644 --- a/src/encoding/xml/marshal_test.go +++ b/src/encoding/xml/marshal_test.go @@ -1297,7 +1297,7 @@ var encodeTokenTests = []struct { toks: []Token{ CharData(" \t\n"), }, - want: ` 	
`, + want: " 	\n", }, { desc: "comment", toks: []Token{ diff --git a/src/encoding/xml/xml.go b/src/encoding/xml/xml.go index 0c64cd730d..00792c4f27 100644 --- a/src/encoding/xml/xml.go +++ b/src/encoding/xml/xml.go @@ -1863,6 +1863,13 @@ var ( // EscapeText writes to w the properly escaped XML equivalent // of the plain text data s. func EscapeText(w io.Writer, s []byte) error { + return escapeText(w, s, true) +} + +// escapeText writes to w the properly escaped XML equivalent +// of the plain text data s. If escapeNewline is true, newline +// characters will be escaped. +func escapeText(w io.Writer, s []byte, escapeNewline bool) error { var esc []byte last := 0 for i := 0; i < len(s); { @@ -1882,6 +1889,9 @@ func EscapeText(w io.Writer, s []byte) error { case '\t': esc = esc_tab case '\n': + if !escapeNewline { + continue + } esc = esc_nl case '\r': esc = esc_cr |
