Я анализирую файл XML, созданный приложением для резервного копирования SMS, но некоторые вещи экранируются сущностями HTML. Я использую xml.etree.ElementTree
, но он жалуется на xml.etree.ElementTree.ParseError: reference to invalid character number: line 29, column 308
, что совпадает с ��
в файле XML. Я знаю, что могу использовать BeautifulSoup. На самом деле, у меня уже есть работающая программа, которая использует его, но я пытаюсь переписать его, чтобы ускорить его. Вот пример тега:
<sms protocol="0" address="1012223434" date="1548857971596" type="1" subject="null" body="... by the time you want a ride. �� " toa="null" sc_toa="null" service_center="null" read="1" status="-1" locked="0" date_sent="0" readable_date="Jan 30, 2019 9:19:31 AM" contact_name="Mom" />
Я использовал iterparse
для данных, чтобы не потреблять слишком много памяти, но я также попытался просто использовать parse
и очистить каждый элемент когда я закончу, чтобы у меня был лучший контроль, но я на самом деле не смог понять эту одну часть. Если я использую html.unescape
, это слишком много, и я получаю xml.etree.ElementTree.ParseError: not well-formed (invalid token): line 27, column 175
, где было '
до того, как оно не было убрано. Если я попытаюсь поставить xml.sax.saxutils.escape
поверх неэкранированного HTML, то это, конечно, также ускользает от всего, что на самом деле должно быть частью XML.
Как я могу скрыть HTML сущности, не заходящие слишком далеко и не покидающие все XML сущности?