我在使用Python 2.6.5 xml.etree.ElementTree库时遇到一些问题。特别是,如果我设置一个简单的xml元素,如下面的
>>> import xml.etree.ElementTree as etree
>>> xml = etree.fromstring("<a><b><c>xy</c></b></a>")
当访问内部元素节点时,我对库没有问题,例如:
>>> etree.tostring(xml.find('b'))
'<b><c>xy</c></b>'
>>> xml.find('b') == None
False
>>> bool(xml.find('b'))
True
然而,我遇到了一个奇怪的叶元素节点的布尔解释,请参阅:
>>> etree.tostring(xml.find('b/c'))
'<c>xy</c>'
>>> xml.find('b/c') == None
False
>>> bool(xml.find('b/c'))
False
请注意,在最后一个命令中,元素xml.fund('b/c')(显然不是None)的计算结果为False。这特别烦人,因为我不能使用这个成语
>>> leaf = xml.find('b/c'):
>>> if leaf:
>>> do_stuff(leaf)
以检查是否存在叶元素。(我必须明确检查'xml.find('b/c')!=无"。)
有人能为我解释一下这种(出乎意料的)行为吗?
好的,很抱歉,在提交这个问题后,我在Python文档中找到了解决方案的明确声明:http://docs.python.org/release/2.6.5/library/xml.etree.elementtree.html#the-元素接口,位于本节末尾。
注意:因为Element对象没有定义非零()方法,所以没有子元素的元素将测试为False。
很抱歉给您带来不便。