PythonでXMLファイルをパースする際、xml.parsers.expat.ExpatError: not well-formed (invalid token)というエラーが発生することがあります。このエラーは、パースしようとしている文字列に無効な文字が含まれている場合に発生します。

この問題を解決する一つの方法は、lxmlモジュールのXMLParserクラスを使用し、recover=Trueを設定することでエラーを無視することです。

from lxml import etree

parser = etree.XMLParser(recover=True)
etree.fromstring(xmlstring, parser=parser)

また、xmltodictを使用してXMLファイルをロードする際に同様のエラーが発生する場合があります。この場合、エンコーディングタイプを明示的に指定することで問題を解決できることがあります。

import xmltodict

with open('fileTEST.xml', encoding='utf8') as fd:
    xmltodict.parse(fd.read())

これらの方法を試しても問題が解決しない場合は、ファイルがByte Order Mark(BOM)付きで保存されている可能性があります。この場合、ファイルをBOMなしのプレーンなutf8で再保存することで問題が解決することがあります。

以上の方法を試しても問題が解決しない場合は、XMLファイルの内容を確認し、無効な文字やエンティティ参照がないか確認してみてください。特に、&'などの特殊文字がエンティティ参照されずに使用されている場合、パースエラーが発生することがあります。

以上、PythonでXMLパーサーが無効なトークンを無視する方法についての記事でした。この情報が皆さんの問題解決に役立つことを願っています。

投稿者 admin

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です