У меня правильно сформированный xml (открытые теги закрыты и т. Д.), Но нет dtd, пространства имен не всегда правильны, и есть случайные объекты.
Я обнаружил ошибку в некоторых моих XML-файлах и хочу исправить ее автоматически. По сути, XML-файл выглядит так:
<foo>
<bar> hi </bar>
<!-- ... -->
<math><sometag><another>bar</another></sometag></math>
<!-- ... -->
</foo>
Я хочу изменить это на
<foo>
<bar> hi </bar>
<!-- ... -->
<m:math><m:sometag><m:another>bar</m:another></m:sometag></m:math>
<!-- ... -->
</foo>
Я посмотрел на Python elementtree, но в соответствии с diveintopython ему не понравится тот факт, что он не проверяет xml? Также важно, чтобы ничего не изменилось, кроме префикса с m:
.
Так как я пишу кучу сценариев оболочки для исправления файлов, мне не очень важен язык, хотя в настоящее время я выбираю Python.
Разъяснения:
- xml проходит при выполнении xmllint на нем
- Я действительно хочу решение для xml, потому что разбор xml с помощью регулярных выражений - это путь к ошибкам
- Я не знаю имен тегов, которые могут быть между
<math>
и </math>
- Не следует вносить никаких изменений в документ , за исключением префикса вышеупомянутых тегов с
m: