summaryrefslogtreecommitdiff
path: root/doc/tutorial.txt
diff options
context:
space:
mode:
authorscoder <none@none>2008-08-08 08:15:07 +0200
committerscoder <none@none>2008-08-08 08:15:07 +0200
commitc9d0e3992c55aa65c1b981453acf400cfd033baf (patch)
tree28c4b49393e4e5db97e28278c55a119854dc08b9 /doc/tutorial.txt
parent8f0081743dc5c3733c180b0bb0d7516b673e9872 (diff)
downloadpython-lxml-c9d0e3992c55aa65c1b981453acf400cfd033baf.tar.gz
[svn r3927] r4720@delle: sbehnel | 2008-08-08 08:14:49 +0200
document that a target parser can be reused if its .close() methods resets it correctly --HG-- branch : trunk
Diffstat (limited to 'doc/tutorial.txt')
-rw-r--r--doc/tutorial.txt35
1 files changed, 33 insertions, 2 deletions
diff --git a/doc/tutorial.txt b/doc/tutorial.txt
index 492ad11f..0e7c943b 100644
--- a/doc/tutorial.txt
+++ b/doc/tutorial.txt
@@ -919,13 +919,44 @@ some or all of these methods, you can control which events are generated:
>>> class ParserTarget:
... events = []
+ ... close_count = 0
... def start(self, tag, attrib):
... self.events.append(("start", tag, attrib))
... def close(self):
- ... return self.events
+ ... events, self.events = self.events, []
+ ... self.close_count += 1
+ ... return events
- >>> parser = etree.XMLParser(target=ParserTarget())
+ >>> parser_target = ParserTarget()
+
+ >>> parser = etree.XMLParser(target=parser_target)
+ >>> events = etree.fromstring('<root test="true"/>', parser)
+
+ >>> print parser_target.close_count
+ 1
+
+ >>> for event in events:
+ ... print('event: %s - tag: %s' % (event[0], event[1]))
+ ... for attr, value in event[2].items():
+ ... print(' * %s = %s' % (attr, value))
+ event: start - tag: root
+ * test = true
+
+You can reuse the parser and its target as often as you like, so you
+should take care that the ``.close()`` methods really resets the
+target to a usable state (also in the case of an error!).
+
+.. sourcecode:: pycon
+
+ >>> events = etree.fromstring('<root test="true"/>', parser)
+ >>> print parser_target.close_count
+ 2
+ >>> events = etree.fromstring('<root test="true"/>', parser)
+ >>> print parser_target.close_count
+ 3
>>> events = etree.fromstring('<root test="true"/>', parser)
+ >>> print parser_target.close_count
+ 4
>>> for event in events:
... print('event: %s - tag: %s' % (event[0], event[1]))