Parses XML into a tree and generates tuples (event, element) in a
SAX-like fashion. event is any of 'start', 'end', 'start-ns',
'end-ns'.
For 'start' and 'end', element is the Element that the parser just
found opening or closing. For 'start-ns', it is a tuple (prefix, URI) of
a new namespace declaration. For 'end-ns', it is simply None. Note that
all start and end events are guaranteed to be properly nested.
The keyword argument events specifies a sequence of event type names
that should be generated. By default, only 'end' events will be
generated.
The additional tag argument restricts the 'start' and 'end' events to
those elements that match the given tag. The tag argument can also be
a sequence of tags to allow matching more than one tag. By default,
events are generated for all elements. Note that the 'start-ns' and
'end-ns' events are not impacted by this restriction.
The other keyword arguments in the constructor are mainly based on the
libxml2 parser configuration. A DTD will also be loaded if validation or
attribute default values are requested.
Available boolean keyword arguments:
attribute_defaults: read default attributes from DTD
dtd_validation: validate (if DTD is available)
load_dtd: use DTD for parsing
no_network: prevent network access for related files
remove_blank_text: discard blank text nodes
remove_comments: discard comments
remove_pis: discard processing instructions
strip_cdata: replace CDATA sections by normal text content (default: True)
compact: safe memory for short text content (default: True)
resolve_entities: replace entities by their text value (default: True)
huge_tree: disable security restrictions and support very deep trees
and very long text content (only affects libxml2 2.7+)
html: parse input as HTML (default: XML)
recover: try hard to parse through broken input (default: True for HTML,