Тип Элемент из xml.etree.cElementTree не распознается в операторе if - PullRequest
2 голосов
/ 10 февраля 2012

Я использую 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

output:

<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' 

дает false

Как я могу использовать такой тип в выражении if

1 Ответ

6 голосов
/ 10 февраля 2012

Похоже, класс Element не предоставляется непосредственно реализацией C.Однако вы можете использовать этот трюк:

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