Я использую sikuli (язык Jython, хотя это в основном python), чтобы поперек дерева xml, ищущего определенный элемент.Рекурсивный метод python возвращает None
если я пишу такой код:
xmldoc = ('/ProgramData/XXXXX/XXXXX/XXXX/file.xml')
tree = ET.parse(xmldoc)
root = tree.getroot()
transverse(root)
def transverse(Root):
for x in Root:
if(x.tag=='ecuID'):
if (x.get('id')=='16'):
print x.get('corner')
else:
transverse(x)
на консоль печатает (5105) (это значение x.get («угол»))
если код, как это
xmldoc = ('/ProgramData/XXXXX/XXXXX/XXXX/file.xml')
tree = ET.parse(xmldoc)
root = tree.getroot()
print transverse(root)
def transverse(Root):
for x in Root:
if(x.tag=='ecuID'):
if (x.get('id')=='16'):
return x.get('corner')
else:
return transverse(x)
журнал печатает Нет. Я чувствую, что он должен вести себя одинаково в любом случае, и мне действительно нужно, чтобы он работал вторым способом.
Я думаю, что код возвращается в первый раз, когда он получает инструкцию else, вместо того, чтобы ожидать, что результат будет отфильтрован назад, если вы поймете, что я имею в виду.
Любая помощь, почему эти в коде сегменты ведут себя по-разному будут значительно apriciated
ваше возвращение заявление в блоке еще останавливает выполнение цикла, независимо от других элементов в корне. вам нужно изменить свое, так что вы вызываете поперечное, проверяете результат, возвращаете его, если нет, продолжайте цикл в противном случае. – njzk2
Это может помочь любому, кто смотрит на это http://docs.python.org/2/library/xml.etree.elementtree.html – switch201
Привет, njzk2 Ваша помощь сработала, я изменил ее на это – switch201