class xml.etree.ElementTree.XMLPullParser(events=None)
A pull parser suitable for non-blocking applications. Its input-side API is similar to that of XMLParser
, but instead of pushing calls to a callback target, XMLPullParser
collects an internal list of parsing events and lets the user read from it. events is a sequence of events to report back. The supported events are the strings "start"
, "end"
, "start-ns"
and "end-ns"
(the “ns” events are used to get detailed namespace information). If events is omitted, only "end"
events are reported.
-
feed(data)
-
Feed the given bytes data to the parser.
-
close()
-
Signal the parser that the data stream is terminated. Unlike
XMLParser.close()
, this method always returnsNone
. Any events not yet retrieved when the parser is closed can still be read withread_events()
.
-
read_events()
-
Return an iterator over the events which have been encountered in the data fed to the parser. The iterator yields
(event, elem)
pairs, where event is a string representing the type of event (e.g."end"
) and elem is the encounteredElement
object.Events provided in a previous call to
read_events()
will not be yielded again. Events are consumed from the internal queue only when they are retrieved from the iterator, so multiple readers iterating in parallel over iterators obtained fromread_events()
will have unpredictable results.
Note
XMLPullParser
only guarantees that it has seen the “>” character of a starting tag when it emits a “start” event, so the attributes are defined, but the contents of the text and tail attributes are undefined at that point. The same applies to the element children; they may or may not be present.
If you need a fully populated element, look for “end” events instead.
New in version 3.4.
Please login to continue.