Commit 99f69ee7 authored by Antoine Pitrou's avatar Antoine Pitrou

Merged revisions 78125 via svnmerge from

svn+ssh://pythondev@svn.python.org/python/trunk

........
  r78125 | antoine.pitrou | 2010-02-09 18:08:05 +0100 (mar., 09 févr. 2010) | 7 lines

  Issue #2746: Don't escape ampersands and angle brackets ("&", "<", ">")
  in XML processing instructions and comments.  These raw characters are
  allowed by the XML specification, and are necessary when outputting e.g.
  PHP code in a processing instruction.  Patch by Neil Muller.
........
parent c77dd32b
......@@ -210,6 +210,26 @@ def check_encoding(ET, encoding):
"""
ET.XML("<?xml version='1.0' encoding='%s'?><xml />" % encoding)
def processinginstruction():
r"""
Test ProcessingInstruction directly
>>> from xml.etree import ElementTree as ET
>>> ET.tostring(ET.ProcessingInstruction('test', 'instruction'))
'<?test instruction?>'
>>> ET.tostring(ET.PI('test', 'instruction'))
'<?test instruction?>'
Issue #2746
>>> ET.tostring(ET.PI('test', '<testing&>'))
'<?test <testing&>?>'
>>> ET.tostring(ET.PI('test', '<testing&>\xe3'), 'latin1')
b"<?xml version='1.0' encoding='latin1'?>\n<?test <testing&>\xe3?>"
"""
def check_issue6233():
"""
>>> from xml.etree import ElementTree as ET
......
......@@ -662,9 +662,9 @@ class ElementTree:
# write XML to file
tag = node.tag
if tag is Comment:
file.write(b"<!-- " + _encode_cdata(node.text, encoding) + b" -->")
file.write(_encode("<!-- %s -->" % node.text, encoding))
elif tag is ProcessingInstruction:
file.write(b"<?" + _encode_cdata(node.text, encoding) + b"?>")
file.write(_encode("<?%s?>" % node.text, encoding))
else:
items = list(node.items())
xmlns_items = [] # new namespaces in this scope
......
......@@ -529,6 +529,7 @@ Pablo Mouzo
Sjoerd Mullender
Sape Mullender
Michael Muller
Neil Muller
R. David Murray
Piotr Meyer
John Nagle
......
......@@ -242,6 +242,11 @@ C-API
Library
-------
- Issue #2746: Don't escape ampersands and angle brackets ("&", "<", ">")
in XML processing instructions and comments. These raw characters are
allowed by the XML specification, and are necessary when outputting e.g.
PHP code in a processing instruction. Patch by Neil Muller.
- Issue #6233: ElementTree failed converting unicode characters to XML
entities when they could't be represented in the requested output
encoding. Patch by Jerry Chen.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment