xml.etree.cElementTree中的Type元素在if语句中不被识别

2 投票
1 回答
3238 浏览
提问于 2025-04-17 12:45

我正在使用cElementTree来解析一个xml文件。使用.getroot()这个函数可以得到一个元素类型的结果。我想在一个if语句中使用这个类型。

if type(elementVariable) == 'Element':
     do stuff

但是,当我这样做的时候,这个类型却没有被识别:

import xml.etree.cElementTree as xml
file = 'test.xml'
# parse the xml file into a tree
tree = xml.parse(file)
# Get the root node of the xml file
rootElement = tree.getroot()
return rootElement
print type(rootElement)
print type(rootElement) == 'Element'
print type(rootElement) == Element

输出:

<type 'Element'>
False
Traceback (most recent call last):
  File "/homes/ndeklein/workspace/MS/src/main.py", line 39, in <module>
    print type(rootElement) == Element
NameError: name 'Element' is not defined

所以

print type(rootElement) 

返回的类型是'Element',但是

print type(rootElement) == 'Element' 

却返回false。

我该如何在if语句中使用这样的类型呢?

1 个回答

6

看起来这个 Element 类并不是直接由 C 语言的实现提供的。不过你可以用这个小技巧:

>>> Element = type(xml.etree.cElementTree.Element(None))
>>> root = xml.etree.cElementTree.fromstring('<xml></xml>')
>>> isinstance(root, Element)
True

撰写回答