Python XML файл чтения

Я надеюсь, что кто-то может помочь. Я не могу прочитать файл XML и перепробовал много предложенных решений. Прежде всего, вот файл:

<Program>
 <20180531 />
 <20180601 />
 <20180602 />
 <20180603 />
 <20180604 />
 <20180605 />
 <20180606 />
 <20180607 />
 <20180608 />
 <20180609 />
 <20180610 />
 <20180611 />
 <20180612 />
 <20180613 />
 <20180614 />
 <20180615 />
 <20180616 />
 <20180617 />
 <20180618 />
 <20180619 />
 <20180620 />
 <20180621 />
 <20180622 />
 <20180623 />
 <20180624 />
 <20180625 />
 <20180626 />
 <20180627 />
 <20180628 />
 <20180629 />
 <20180630 />
 <20180701 />
 <20180702 />
 <20180703 />
 <20180704 />
</Program>

Просто некоторые даты на самом деле. Этот файл генерируется путем вызова

   import xml.etree.ElementTree as etree
   top = etree.Element('Program')
   for day in alldays: # alldays is a list of dates using datetime
       dan = etree.SubElement(top, day.strftime('%Y%m%d'))
       tree = etree.ElementTree(top)
       tree.write(directory + omnifile)

Но я не могу прочитать этот файл, позвонив:

 tree = etree.parse(somefile)

Я получаю эту ошибку: xml.etree.ElementTree.ParseError: неправильно сформирован (неверный токен): строка 1, столбец 10

Я не вижу проблемы и не могу понять, почему файл, сгенерированный ElementTree, не может быть прочитан ElemenTree. Я использую Python 3.6.5 в Fedora.

1 ответ

Файл "XML" не правильно сформирован. Имена элементов не могут начинаться с цифры. Обратите внимание, что цифры исключены из NameStartChar производство грамматики XML: https://www.w3.org/TR/xml/.

ElementTree немного слаб, когда речь заходит о создании вывода XML. С другой стороны, lxml не позволит вам сделать это. Если вы попытаетесь, произойдет ошибка "Неверное имя тега".

Другие вопросы по тегам