import xml.etree.ElementTree as ET e = ET.Element('Brock',Role="Bodyguard") print bool(e)
Why is an xml.etree.ElementTree.Element
considered False
?
I know that I can do if e is not None
to check for existence. But I would strongly expect bool(e)
to return True
.
The cElementTree module is a C implementation of the ElementTree API, optimized for fast parsing and low memory use. On typical documents, cElementTree is 15-20 times faster than the Python version of ElementTree, and uses 2-5 times less memory.
Parsing from strings and files. lxml. etree supports parsing XML in a number of ways and from all important sources, namely strings, files, URLs (http/ftp) and file-like objects. The main parse functions are fromstring() and parse(), both called with the source as first argument.
As it turns out, Element
objects are considered a False
value if they have no children.
I found this in the source:
def __nonzero__(self): warnings.warn( "The behavior of this method will change in future versions. " "Use specific 'len(elem)' or 'elem is not None' test instead.", FutureWarning, stacklevel=2 ) return len(self._children) != 0 # emulate old behaviour, for now
Even the inline comment agrees with you -- this behavior is iffy ;)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With