Форум сайта python.su
всем привет, подскажите, пожалуйста. мне нужно пропарсить xml документ, я открываю докс пайтон орг, смотрю страничку xml.etree.ElementTree и вроде всё просто, есть кусок кода, бери да делай
import xml.etree.ElementTree as ET
tree = ET.parse('country_data.xml')
root = tree.getroot()
я ввожу первую строку, вторую и интерпретатор выдает мне ошибку
Traceback (most recent call last):
File “D:\Users\�����\Miniconda3\lib\site-packages\IPython\core\interactiveshell.py”, line 3066, in run_code
exec(code_obj, self.user_global_ns, self.user_ns)
File “<ipython-input-3-08e39a478024>”, line 1, in <module>
tree = ET.parse('BarterList.xml')
File “D:\Users\�����\Miniconda3\lib\xml\etree\ElementTree.py”, line 1187, in parse
tree.parse(source, parser)
File “D:\Users\�����\Miniconda3\lib\xml\etree\ElementTree.py”, line 598, in parse
self._root = parser._parse_whole(source)
File “<string>”, line None
xml.etree.ElementTree.ParseError: not well-formed (invalid token): line 1747, column 45
тут у меня ступор
Офлайн
IrisДокумент имеет неправильную структуру, невалидный xml. Документ country_data.xml покажте
ParseError: not well-formed (invalid token)
Офлайн
вот этот пытаюсь прочитать.
читаю я его конечно строкой tree = ET.parse('BarterList.xml')
Прикреплённый файлы:
BarterList.xml (237,0 KБ)
Офлайн
Надо всё поместить в главный (корневой) узел. По спецификации XML в документе может быть только один узел, а в нём все остальные.
Отредактировано py.user.next (Апрель 18, 2016 15:13:54)
Офлайн
py.user.nextСпасибо!
Надо всё поместить в главный (корневой) узел. По спецификации XML в документе может быть только один узел, а в нём все остальные.
Офлайн
IrisНет.
а есть смысл решать задачу через pyparsing?
IrisС ним придётся писать с нуля всё то, что уже находится внутри модулей для разбора xml.
или с ним тоже всё придется к одному узлу приводить?
Отредактировано py.user.next (Апрель 18, 2016 16:15:08)
Офлайн
Отсутсвие корневого тега то не проблема, делаем временный файл, пишем туда открывающий фейковый корневой тег, пишем исходый файл, пишем закрывающий корневой тег, парсим временный файл, удаляем временный файл. Но у вас все еще хуже. XML не допускает вложенные комментарии, а этом файле их куча.
➜ ~ xmlstarlet val -e BarterList.xml
BarterList.xml:1747.44: Comment not terminated
<!-- <LostItemType>107</LostItemType><!
<!-- <LostItemType>107</LostItemType><!-- Костюм пачка --> -->
^
BarterList.xml - invalid
Офлайн
Спасибо большое)) начала просто работать с другим файлом, там всё ок)
Офлайн
I appreciate the inclusion of diverse perspectives, as it enriches the article and demonstrates Pokerogue a commitment to presenting a well-rounded view of the topic.
Офлайн