找到Python XML元素,但计算结果为False-如何通过pythonically检查存在性?
我在Python中使用找到Python XML元素,但计算结果为False-如何通过pythonically检查存在性?,python,xml,python-2.7,Python,Xml,Python 2.7,我在Python中使用xml.etree解析SOAP响应(不要问…)。响应包含一个元素 我去搜索它,找到它,得到一个xml.etree.ElementTree.Element实例,我们称它为my_Element 然而,所述实例的计算结果为False bool(my_元素)为False my\u元素。\uuuu非零元素(为False(使用Python 2.7,否则我会选中\uuuu bool()) 我假设这是因为my_元素.text是空的,因为是空的xml元素 我还假设这是一种类似python
xml.etree
解析SOAP响应(不要问…)。响应包含一个
元素
我去搜索它,找到它,得到一个xml.etree.ElementTree.Element
实例,我们称它为my_Element
然而,所述实例的计算结果为False
为Falsebool(my_元素)
为my\u元素。\uuuu非零元素(
(使用Python 2.7,否则我会选中False
)李>\uuuu bool()
my_元素.text
是空的,因为
是空的xml元素
我还假设这是一种类似python的方法,因为空列表和dict的行为类似——尽管我认为空但现有的XML元素的含义不同:检查它是否存在的最类似python的方法是什么
真的是这样吗
from xml.etree.ElementTree import Element
...
if isinstance(my_element, Element):
否,
isinstance
不是检查元素是否不存在的推荐方法
发件人:
注意:没有子元素的元素将测试为False。此行为将在将来的版本中更改。使用特定的len(elem)
或elem为None
测试代替
发件人:
要测试元素是否不存在,请执行以下操作:
my_element = tree.find('.//Success')
if my_element is not None:
do_something(my_element)
您没有列出用于查找它的方法。但如果找不到,它可能不会返回任何值。所以如果my_元素不是None,则可能succeed=myTree.find('Success')不是None
。理想情况下,响应的设计应该使成功元素始终存在并设置为True或False。这是否回答了您的问题?没有看到警告。如果元素没有子元素,为什么返回false?我不明白那个决定。
my_element = tree.find('.//Success')
if my_element is not None:
do_something(my_element)