Message324910
Blast. Bugs. Sorry. Missing superclass init call in CommentingTb. I enclose the whole thing again to save editing. Also fixes comment output to give text.
from __future__ import print_function
import sys
import xml.etree.ElementTree as et
import xml.etree.cElementTree as cet
from io import StringIO
teststr = u"""<?xml version="1"?>
<root>
<child>
Hello <!-- Greeting --> World
</child>
</root>"""
testf = StringIO(teststr)
if len(sys.argv) >= 2 and 'a' in sys.argv[1]:
testf.seek(0)
for event, elem in et.iterparse(testf, events=["end", "comment"]):
if event == 'end':
print(elem.tag + ": " + str(elem.text))
elif event == 'comment':
print("comment: " + elem.text)
if len(sys.argv) < 2 or 'b' in sys.argv[1]:
testf.seek(0)
def doComment(data):
parser.parser.StartElementHandler("!--", ('text', data))
parser.parser.EndElementHandler("!--")
parser = et.XMLParser()
parser.parser.CommentHandler = doComment
for event, elem in et.iterparse(testf, parser=parser):
if elem.tag == "!--":
print(elem.tag + ": " + elem.get('text', ""))
else:
print(elem.tag + ": " + str(elem.text))
if len(sys.argv) < 2 or 'c' in sys.argv[1] or 'd' in sys.argv[1]:
testf.seek(0)
useet = et if len(sys.argv) < 2 or 'c' in sys.argv[1] else cet
class CommentingTb(useet.TreeBuilder):
def __init__(self):
useet.TreeBuilder.__init__(self)
self.parser = None
def comment(self, data):
self.parser.parser.StartElementHandler("!--", ('text', data))
self.parser.parser.EndElementHandler("!--")
tb = CommentingTb()
parser = useet.XMLParser(target=tb)
tb.parser = parser
kw = {'parser': parser} if len(sys.argv) < 2 or 'c' in sys.argv[1] else {}
for event, elem in useet.iterparse(testf, **kw):
if elem.tag == "!--":
print(elem.tag + ": " + elem.get('text', ""))
else:
print(elem.tag + ": " + str(elem.text)) |
|
Date |
User |
Action |
Args |
2018-09-10 03:51:39 | Martin Hosken | set | recipients:
+ Martin Hosken, scoder, eli.bendersky, serhiy.storchaka |
2018-09-10 03:51:39 | Martin Hosken | set | messageid: <1536551499.12.0.56676864532.issue34600@psf.upfronthosting.co.za> |
2018-09-10 03:51:39 | Martin Hosken | link | issue34600 messages |
2018-09-10 03:51:38 | Martin Hosken | create | |
|