XML модифицирует и записывает в файл красивый суп

Я использую красивый суп python для анализа XML-файла и записи его в другой файл после удаления определенных тегов. Но, используя soup.prettify, изменяется другое пространство имен XML и имена атрибутов.

f = open ('new.xml', "w"); f.write (soup.prettify (форматировщик = "XML")); f.close ();

Изменения приведены в примере ниже.

Оригинальный XML-файл.

<draw:control text:anchor-type="paragraph" draw:z-index="1" draw:style-name="gr1" draw:text-style-name="P2" svg:width="2.805cm" svg:height="1.853cm" svg:x="3.602cm" svg:y="0.824cm" draw:control="control2"/> 

Новый файл XML, написанный с сайта soup.prettify.

  <draw:control draw:control="control2" draw:style-name="gr1" draw:text-style-name="P2" draw:z-index="1" svg:height="1.853cm" svg:width="2.805cm" svg:x="3.602cm" svg:y="0.824cm" text:anchor-type="paragraph"/> 

Я попытался добавить utf-8 для prettify (). Но, та же проблема. Есть ли какой-либо другой метод для удаления определенного тега на основе поиска и хранения всего другого содержимого XML в файле в такт? Пожалуйста, предложите.

One Solution collect form web for “XML модифицирует и записывает в файл красивый суп”

Подумайте об использовании собственного модуля xml.etree.ElementTree который реализует простой и эффективный API для синтаксического анализа и создания XML-данных. Это быстрее, лучше, проще и питонично .

Вы можете удалить определенный элемент, используя Element.remove() .

Здесь приведен базовый пример.

Но если вы настаиваете на использовании BeautifulSoup (он использует lxml , расширенную версию встроенного модуля py), вы можете

 # beautifulstonesoup for XML parsing from BeautifulSoup import BeautifulStoneSoup xml_data = """ <draw:control text:anchor-type="paragraph" draw:z-index="1" draw:style-name="gr1" draw:text-style-name="P2" svg:width="2.805cm" svg:height="1.853cm" svg:x="3.602cm" svg:y="0.824cm" draw:control="control2"/> """ soup = BeautifulStoneSoup(xml_data) print soup.prettify() soup.find(<your tag/element).replaceWith(<whateveryouwant>) 

Вы также можете использовать цикл for для редактирования нескольких аналогичных элементов.

  • sed на cygwin может заменить только одного персонажа?
  • Смутно о том, как преобразовать XML в CSV с помощью xmlstarlet в OS X?
  • Добавление нового атрибута в существующий xml-файл с помощью sed или awk
  • Как заменить «& # x5c» на «/» в файле с помощью командной строки?
  • сравнить два файла XML
  • Как разбить Openbox `rc.xml` на несколько файлов?
  • Большая замена в XML
  • Есть ли какие-либо инструменты, которые позволят мне проверить длину строки XML-узла
  • Как я могу разобрать xml-файл с URL-адреса http без загрузки файла и распечатать нужную строку?
  • Копирование XML-контента между двумя тегами из одного файла в другой
  • Изменение файла XML на основе частичного имени
  • Linux и Unix - лучшая ОС в мире.