본문 바로가기
python

Python - XML 파싱 오류 해결 ( xml.etree.ElementTree.ParseError )

by 맑은안개 2020. 12. 7.

xml 파싱 오류 해결 ( with BeautifulSoup )

xml 파일을 파싱하기 위해 xml.etree 를 사용했다.

from os import listdir
from shutil import copyfile
import xml.etree.ElementTree as ET

..중략..

def copy_js_file(done_list):
    for file in done_list:
        _parser = ET.XMLParser(encoding="utf-8")
        _file = ET.parse(file, _parser)

파싱 대상 파일은 단순한 xml이 아닌 RIA 기반의 웹XML 파일이다. 

위 코드 실행시 아래와 같은 오류가 발생했다.

xml.etree.ElementTree.ParseError: not well-formed (invalid token)

XMLParser의 encoding 옵션을 수정하여도 다른 내용의 오류가 발생했다.

 

온갖 방법을 사용해봤지만 해결이 되지 않아 BeautifulSoup 으로 파싱해보았다. 

from os import listdir
from shutil import copyfile
from bs4 import BeautifulSoup as bf

..중략..

def copy_js_file(done_list):
    for file in done_list:
        with open(file, 'r') as f:
            _file = bf(f, features="html.parser")
            print(_file)

적용한 결과 문제가 해결되었다. 짐작건대 파싱 대상 파일의 xml구조에 오류가 있어 발생한 문제라 생각된다.

BeaultifulSoup의 "html.parser" 옵션을 지정하면 xml 구조에 오류가 존재해도 무시하고 파싱처리 되는 것 같다. 

 

반응형