From 91c64a05d2536cbe764cb94c3e24f021d34f7d9a Mon Sep 17 00:00:00 2001 From: "Andrew M. Kuchling" Date: Fri, 9 Jun 2006 13:15:57 +0000 Subject: [PATCH] [Bug #1472827] Make saxutils.XMLGenerator handle \r\n\t in attribute values by escaping them properly. 2.4 bugfix candidate. --- Lib/test/test_sax.py | 7 +++++-- Lib/xmlcore/sax/saxutils.py | 2 ++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/Lib/test/test_sax.py b/Lib/test/test_sax.py index ded81fb2b57..246d214d6ad 100644 --- a/Lib/test/test_sax.py +++ b/Lib/test/test_sax.py @@ -175,11 +175,14 @@ def test_xmlgen_attr_escape(): gen.endElement("e") gen.startElement("e", {"a": "'\""}) gen.endElement("e") + gen.startElement("e", {"a": "\n\r\t"}) + gen.endElement("e") gen.endElement("doc") gen.endDocument() - return result.getvalue() == start \ - + "" + return result.getvalue() == start + ("" + "" + "") def test_xmlgen_ignorable(): result = StringIO() diff --git a/Lib/xmlcore/sax/saxutils.py b/Lib/xmlcore/sax/saxutils.py index 582b0089c4b..a4965192fa8 100644 --- a/Lib/xmlcore/sax/saxutils.py +++ b/Lib/xmlcore/sax/saxutils.py @@ -68,6 +68,8 @@ def quoteattr(data, entities={}): the optional entities parameter. The keys and values must all be strings; each key will be replaced with its corresponding value. """ + entities = entities.copy() + entities.update({'\n': ' ', '\r': ' ', '\t':' '}) data = escape(data, entities) if '"' in data: if "'" in data: