2014-07-19 8 views
1

Я использую BeautifulSoup для внесения изменений в XML-файл, но я заметил, что если я прочитал в файле, поместил его в конструктор и просто выплюнул обратно, не внося никаких изменений, BeautifulSoup уже внес некоторые изменения к коду. Например, имена тегов и атрибутов являются строчными, а порядок атрибутов в теге изменяется.Python: BeautifulSoup автоматически изменяет текст при чтении?

Я знаю, что это прагматически не должно быть проблемой, но программа, которая должна читать XML-файл, очень ничтожно и не принимает эти изменения. Я обнаружил, что могу внести изменения, используя обычные строковые операции без BeautifulSoup, но это неудобно.

Есть ли способ предотвратить использование BeautifulSoup изменений в XML после его чтения?

+0

BeautifulSoup - это парсер HTML. Не используйте его в XML. – Ryan

+1

@minitech Не совсем точно. BS можно использовать для синтаксического анализа XML, установив библиотеку анализатора xml - http://www.crummy.com/software/BeautifulSoup/bs4/doc/#installing-a-parser – shaktimaan

+0

Включите используемый код, образец ввода и ожидаемый вывод. – shaktimaan

ответ

1

BeautifulSoup работает, анализируя XML в объекты, которые он понимает. Когда он записывает XML, он записывает данные в объекты, а не оригинальную строку, которая была проанализирована.

Одним из решений было бы проанализировать XML с помощью BeautifulSoup, а затем использовать полученный api для пользовательской записи XML в соответствии с требованиями вашей программы. Вы можете сделать custom pretty printer или просто iterate through the elements, вручную отпечатывая и форматируя данные в соответствии с вашими потребностями.

Смежные вопросы