Я использую Python для управления XML-файлом, полученным из другой системы. Эта система создает недопустимый XML. В основном он не избегает некоторых символов & в XML.
Так, например, у меня есть несколько таких строк:
<IceCream>Ben&Jerry</IceCream>
Конечно, при синтаксическом анализе с помощью SAX или DOM возникает ошибка недопустимого токена.
В общем, это очень большой файл (2 МБ), довольно плоский и содержит много данных в CDATA.
Что я пробовал:
& (?! \ w {2,4};)
. Он исправил это, но он избежал амперсандов в CDATA, которые затем вызывали ошибки в целевой системе. Я не могу потом отменить экранирование всего, что находится в CDATA, потому что некоторые из них должны оставаться в экранировании. & Jerry;
). Не хорошо. Следующим шагом будет написание моего собственного анализатора с использованием конечного автомата. Спаси меня от того, чтобы пойти по этой дороге.
Это несложная структура (очень плоская, глубиной не более 4 слоев), поэтому, возможно, регулярное выражение сможет улавливать области, которых нет в CDATA.
Большое спасибо.