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 для редактирования нескольких аналогичных элементов.

  • Вставить многострочную строку в другую строку
  • Как удалить содержимое перед шаблоном в XML с помощью Unix
  • Измените текст в теге, но только тег содержится в определенном блоке XML
  • Значения отображения xmllint более 1 атрибута в одном исполнении
  • Ошибка синтаксиса Openbox в ~ / .config / openbox / rc.xml
  • Разбирайте XML, чтобы получить значение узла в скрипте bash?
  • Как заменить «& # x5c» на «/» в файле с помощью командной строки?
  • изменить строку и удалить тег, используя perl из xml-файла?
  • Как узнать содержимое файла XML с помощью Unix Sed / Awk?
  • Изменение файла XML на основе частичного имени
  • Нужно проанализировать тег файла XML 'Asset Id' и связанные дочерние tags, используя скрипт оболочки?
  • Interesting Posts

    Как grep вывод cURL?

    Перезагрузка Redhat Enterprise Linux

    Где находится frame.h в современных реализациях Linux? (специально для ubuntu)

    Fail2ban для nginx post flood игнорирует временные интервалы

    Как скопировать файлы * в * камеру?

    Могу ли я использовать SSH для туннелирования определенного порта через мой сервер

    Есть ли способ ограничить доступ приложения к системному времени в Linux?

    Как отключить источник питания переменного тока от CLI

    Как настроить команду времени для измерения прошедшего времени программы

    Создание правила UFW, позволяющего приложению использовать динамические порты

    Как я могу оправиться от `chmod -x chmod`?

    Почему thepiratebay.se показывает содержимое /var/www/index.html?

    Проверьте, есть ли файлы, соответствующие шаблону, чтобы выполнить скрипт

    bash: используйте переменную для хранения stderr | stdout redirection

    Я случайно ввел свой пароль в поле входа, он все еще безопасен?

    Linux и Unix - лучшая ОС в мире.