2

我正在使用 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) 

给出“元素”作为类型,但是

print type(rootElement) == 'Element' 

给出错误的

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

4

1 回答 1

6

看起来这个Element类没有被 C 实现直接公开。但是你可以使用这个技巧:

>>> Element = type(xml.etree.cElementTree.Element(None))
>>> root = xml.etree.cElementTree.fromstring('<xml></xml>')
>>> isinstance(root, Element)
True
于 2012-02-10T10:13:51.733 回答