Как обработать исключение libxml2 parserError с помощью python - PullRequest
0 голосов
/ 12 января 2012

Я пытаюсь написать warpper, который анализирует XML-файлы, используя таблицу стилей xsl, и преобразует их в html. Для сломанных входных файлов xml я получаю исключение:

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Python27\lib\lib-tk\Tkinter.py", line 1410, in __call__
    return self.func(*args)
  File "C:\Users\USER\Desktop\raportowanie\topsurv raport_beta01\_newest\transmutation     for trimble\testing_transmutation_v.0.6.2.py", line 712, in btnConvertClick
    doc = libxml2.parseFile(filename)
  File "C:\Python27\lib\site-packages\libxml2.py", line 1279, in parseFile
    if ret is None:raise parserError('xmlParseFile() failed')
parserError: xmlParseFile() failed


и безуспешно пытался:

try:
    doc = libxml2.parseFile(filename)
except (libxml2.parserError, TypeError):
    print 'error'

По сути, я не получаю никаких исключений, и парсер ведет себя так, как будто все прошло успешно.
Я хотел бы попросить Вас о помощи в этом.

1 Ответ

1 голос
/ 12 января 2012

Я рекомендую использовать BeautifulSoup , так как он способен анализировать искаженный xml.

На самом деле, самый первый в списке функций:

Красивый суп не захлебнется, если вы дадите ему плохую разметку.Это дает дерево разбора, которое имеет примерно такой же смысл, как и ваш исходный документ.Обычно этого достаточно, чтобы собрать нужные данные и убежать.

...