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 не позволит вам сделать это. Если вы попытаетесь, произойдет ошибка "Неверное имя тега".