diff options
| author | Roger Peppe <rogpeppe@gmail.com> | 2015-04-24 17:20:21 +0100 |
|---|---|---|
| committer | roger peppe <rogpeppe@gmail.com> | 2015-04-27 15:38:04 +0000 |
| commit | 4a3e000a48fdfe4cbcfe8970db9c1ebec9c4b89d (patch) | |
| tree | a84725971fefd062a64ec8f53177535f5e0e2e2d /src/encoding/xml | |
| parent | b0b1a660526925d39c5c31e18df68db4d5b6687a (diff) | |
| download | go-4a3e000a48fdfe4cbcfe8970db9c1ebec9c4b89d.tar.xz | |
encoding/xml: do not escape newlines
There is no need to escape newlines in char data -
it makes the XML larger and harder to read.
Change-Id: I1c1fcee1bdffc705c7428f89ca90af8085d6fb73
Reviewed-on: https://go-review.googlesource.com/9310
Reviewed-by: Nigel Tao <nigeltao@golang.org>
Reviewed-by: Russ Cox <rsc@golang.org>
Diffstat (limited to 'src/encoding/xml')
| -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 |
