Python, ошибки индекса - PullRequest
       11

Python, ошибки индекса

1 голос
/ 14 января 2009

У меня есть некоторый код, который рисует данные из XML-файла, но кажется, что он запускается случайным образом;

Traceback (most recent call last):
  File "C:\Users\mike\Documents\python\arl xml\turn 24 reader", line 52, in <module>
    unitCount   = getText(evoNode.getElementsByTagName("count")[0].childNodes)
IndexError: list index out of range

Впервые я запустил его, но я не знаю, изменил ли я его случайно или нет, но теперь выдает ошибку.

Это пример раздела xml, который он пытается использовать;

- <unit>
  <count>1200</count> 
  <type>Zweihander Doppelsoldners</type> 
  <typeid>102</typeid> 
  </unit>

и вот код, на который он жалуется;

   for unitNode in node.getElementsByTagName('unit'):
      unitName      = getText(evoNode.getElementsByTagName("type")[0].childNodes)
      unitId     = getText(evoNode.getElementsByTagName("typeid")[0].childNodes)
      unitCount   = getText(evoNode.getElementsByTagName("count")[0].childNodes)

      unitList.append("%s x %s" % (unitName, unitCount))

Хотя я принимаю, что сначала он жалуется на строку подсчета, потому что счетчик является наибольшим из трех в файле XML в разделе единиц, я все еще не уверен, почему он жалуется, учитывая, что он успешно запускает очень похожий набор код, из которого это было клонировано и отредактировано.

Кто-нибудь знает, что я могу сделать или может предложить способы уточнить вопрос?

Ответы [ 2 ]

2 голосов
/ 14 января 2009

Простая идея: проверьте, возвращает ли evoNode.getElementsByTagName("count") непустой список:

counts = evoNode.getElementsByTagName("count")
if counts:
    unitCount = getText(counts[0].childNodes)

Конечно, проверка должна применяться ко всем спискам, полученным с помощью вашего кода.

Еще одна вещь, вы итерируете, используя unitNode, но внутри цикла вы получаете доступ к evoNode, что, вероятно, одинаково для каждой итерации.

1 голос
/ 14 января 2009

Как сказал Гимел, вы должны проверить getElementsByTagName ("count"), если он возвращает непустой список, но возвращает к вашей проблеме:

Если вы сказали, что это работало раньше, тогда я думаю, что проблема в источнике, где вы получаете XML.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...