У меня есть XML-файл, который должен быть напечатан для потребления человеком. В течение многих лет мы вносили изменения с помощью xmlspy и использовали его функцию gridview, чтобы стандартизировать отступы перед проверкой на git. Я не хочу привязывать пользователей к этой программе, поэтому планировал добавить сценарий python для запуска при регистрации, который будет читать в xml-файле, переформатировать его с использованием стандартных отступов, а затем записать это в файл, который будет зарегистрирован. Я использовал приведенный ниже код, который приведен ниже во многих ответах на подобные вопросы. Это может работать нормально, если ваш xml-файл не имеет tabs
и carriage-returns
, однако, кажется, что он не затрагивает форматирование, которое уже существует. Например, если мой xml-файл выглядит следующим образом, я хочу, чтобы <Grape>
был помещен в строку, но на самом деле этого не происходит в моих выходных данных. <Grape>
имеет дополнительные отступы в выходном файле
Пример
<Fruit>
<Apple/>
<Grape/>
<Pear/>
</Fruit>
Код
import lxml.etree as etree
output_file = open("output.txt", "w")
parsed_file = etree.parse("input.xml")
parsed_bytes = (etree.tostring(parsed_file, pretty_print=True, encoding="unicode"))
output_file.write(parsed_bytes)
Дополнительная информация Работа с ним более Я думаю, что часть проблемыis pretty_print
не вызывается, если у меня есть какие-либо табуляции / пробелы в mt xml. Если мой исходный файл предварительно вырезан, то симпатичная печать работает нормально, но если я разделю это на две строки, это не будет хорошо печататься.
<Fruit><Apple/><Grape/><Pear/></Fruit>