aboutsummaryrefslogtreecommitdiff
path: root/src/encoding
diff options
context:
space:
mode:
Diffstat (limited to 'src/encoding')
-rw-r--r--src/encoding/xml/marshal.go2
-rw-r--r--src/encoding/xml/marshal_test.go2
-rw-r--r--src/encoding/xml/xml.go10
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