Я пытаюсь разобрать XML-файл, зависит от тега, который может быть или не существовать!Анализ XML-файла зависит от тегов, которые могут быть или не быть.
Как я могу избежать этого IndexError без использования обработчика исключений?
питон скрипт:
#!/usr/bin/python3
from xml.dom import minidom
doc = minidom.parse("Data.xml")
persons = doc.getElementsByTagName("person")
for person in persons:
print(person.getElementsByTagName("phone")[0].firstChild.data)
data.xml:
<?xml version="1.0" encoding="UTF-8"?>
<obo>
<Persons>
<person>
<id>XA123</id>
<first_name>Adam</first_name>
<last_name>John</last_name>
<phone>01-12322222</phone>
</person>
<person>
<id>XA7777</id>
<first_name>Anna</first_name>
<last_name>Watson</last_name>
<relationship>
<type>Friends</type>
<to>XA123</to>
</relationship>
<!--<phone>01-12322222</phone>-->
</person>
</Persons>
</obo>
и я получаю IndexError:
01-12322222
Traceback (most recent call last):
File "XML->Neo4j-try.py", line 29, in <module>
print(person.getElementsByTagName("phone")[0].firstChild.data)
IndexError: list index out of range
Почему вы не хотите использовать обработчик исключений? Я думаю, что это хороший способ сделать это. Вы можете использовать аргументы if-else, чтобы убедиться, существует ли уровень. Но этот способ не является действительно динамичным. Возможно, вы не знаете, сколько у него уровня. – trantu
cos У меня есть большой файл xml, который, я думаю, займет много времени, чтобы проанализировать, если есть много обработчиков исключений. Plz check [this] (http://stackoverflow.com/questions/37022525/loading-data-to-neo4j -из-XML-с помощью-py2neo) – Zingo