Уведомления

Группа в Telegram: @pythonsu

#1 Март 25, 2019 22:45:54

DNL
Зарегистрирован: 2019-03-25
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Парсер для XML

Добрый день, Уважаемые форумчане!

Помогите разобраться. Стоит задача распарсить более 1 000 000 xml файлов. Решил реализовать данный парсер на python. Но до этого не работал с ним.
Начал с маленького учиться читать файл xml и определять его корень, но выдает ошибку.
Пример:
import xml.etree.ElementTree as ET
tree = ET.parse(“D:\XML\sample.xml”)
root = tree.getroot()
print(root)

Выдает следующую ошибку

Traceback (most recent call last):
File “CUsers/Crazy/PycharmProjects/Parser/sample_1.py”, line 3, in <module>
tree = ET.parse(“D:\XML\sample.xml”)
File “C:\Python37\lib\xml\etree\ElementTree.py”, line 1197, in parse
tree.parse(source, parser)
File “C:\Python37\lib\xml\etree\ElementTree.py”, line 598, in parse
self._root = parser._parse_whole(source)
xml.etree.ElementTree.ParseError: not well-formed (invalid token): line 10, column 17

Подскажите пожалуйста с чем связанна данная ошибка

Офлайн

#2 Март 25, 2019 23:37:40

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10024
Репутация: +  857  -
Профиль   Отправить e-mail  

Парсер для XML

Потренируйся на маленьком, гарантированно правильном файле. Скорее всего, у тебя в реальных файлах какие-то нарушения XML.



Отредактировано py.user.next (Март 25, 2019 23:38:16)

Офлайн

#3 Март 26, 2019 06:07:58

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Парсер для XML

Если файлов много, они большие, не совсем корректные то лучше воспользоваться lxml у которой возможностей поболе. В том числе возможность чтения некорректных xml

Ну и файл в студию. Тогда будет возможность посмотреть что там.
Что там на “line 10, column 17”?
p.s.
Обычно задача не парсинг (т.е. построение абстрактного синтаксического дерева) а извлечение и преобразование данных. Озвучте эту часть постановки задачи. Во многих случаях более эффективны другие решения, как то извлечение данных регулярными выражениями, xslt преобразование https://ru.wikipedia.org/wiki/XSLT и т.д. и т.п.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version