Я использую lxml для управления некоторыми существующими документами XML, и я хочу представить как можно меньше различий в шуме. К сожалению, по умолчанию lxml.etree.XMLParser не сохраняет пробелы до или после корневого элемента документа:Как я могу заставить парсер lxml сохранять пробелы вне корневого элемента?
>>> xml = '\n <etaoin>shrdlu</etaoin>\n'
>>> lxml.etree.tostring(lxml.etree.fromstring(xml))
'<etaoin>shrdlu</etaoin>'
>>> lxml.etree.tostring(lxml.etree.fromstring(xml)) == xml
False
Возможно ли это с помощью LXML? Поддерживается ли это базовым libxml2?
Я наткнулся на этот ответ, ища решение той же проблемы. Но я не понимаю; как бы вы на самом деле это сделали? Что, например, если изменение вводит новые атрибуты или добавляет в него строку с пробелом? Как вы можете восстановить пробелы? – flodin
Этот ответ не обрабатывает эти случаи. Если вы измените структуру DOM, значение «сохранить пробел» станет грязным. Чтобы справиться с структурными изменениями, вы действительно хотите перестроить пробелы, а не восстанавливать их. – SpliFF