Python: стирание строк для использования в XML

Я использую xml.dom.minidom Python для создания XML-документа. (Логическая структура -> XML-строка, а не наоборот).

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

  • Как я могу избежать двоеточий в имени атрибута с ElementTree Python?
  • Почему ElementTree повышает ParseError?
  • Выясните, где CDATA находится в элементе lxml?
  • Сохранять существующие пространства имен при перезаписывании XML-файла с помощью ElementTree и Python
  • Функция обмена в Openerp
  • XPath: выберите тег с пустым значением
  • python обрабатывает бесконечный XML
  • генерировать xml с sax2 в python
  • 5 Solutions collect form web for “Python: стирание строк для использования в XML”

    Вы имеете в виду, что вы делаете что-то вроде этого:

     from xml.dom.minidom import Text, Element t = Text() e = Element('p') t.data = '<bar><a/><baz spam="eggs"> & blabla &entity;</>' e.appendChild(t) 

    Затем вы получите красивую экранированную строку XML:

     >>> e.toxml() '<p>&lt;bar&gt;&lt;a/&gt;&lt;baz spam=&quot;eggs&quot;&gt; &amp; blabla &amp;entity;&lt;/&gt;</p>' 

    Что-то вроде этого?

     >>> from xml.sax.saxutils import escape >>> escape("< & >") '&lt; &amp; &gt;' 

    xml.sax.saxutils.escape только escapes & , < и > по умолчанию, но он предоставляет параметр entities для дополнительного выхода из других строк:

     from xml.sax.saxutils import escape def xmlescape(data): return escape(data, entities={ "'": "&apos;", "\"": "&quot;" }) 

    xml.sax.saxutils.escape использует str.replace() внутри, поэтому вы также можете пропустить импорт и написать свою собственную функцию, как показано в ответе MichealMoser.

    xml.sax.saxutils не избегает символов котировки (")

    Итак, вот еще один:

     def escape( str ): str = str.replace("&", "&amp;") str = str.replace("<", "&lt;") str = str.replace(">", "&gt;") str = str.replace("\"", "&quot;") return str 

    если вы посмотрите, то xml.sax.saxutils только заменяет строку

    Если вы не хотите импортировать другой проект и у вас уже есть cgi , вы можете использовать это:

     >>> import cgi >>> cgi.escape("< & >") '&lt; &amp; &gt;' 

    Обратите внимание, однако, что с этой четкостью кода страдает – вы должны, вероятно, включить ее в функцию, чтобы лучше описать ваше намерение: (и написать для него единичные тесты, пока вы на нем;)

     def xml_escape(s): return cgi.escape(s) # escapes "<", ">" and "&" 
    Interesting Posts

    загрузить файл csv в numpy и получить доступ к столбцам по имени

    Библиотека классификации цветов

    Учитывая диапазон дат, как рассчитать количество выходных дней частично или полностью в этом диапазоне?

    Передача указателя структуры на функцию в ctypes

    Какова цель прямого вызова __init__?

    return не возвращает ничего в рекурсии python

    Как преобразовать строку json в словарь и сохранить порядок в ключах?

    Как получить разделитель переменных среды PATH в Python?

    Объединить список кадровых фреймов pandas

    Как получить доступ к свойствам суперклассов Python, например, через __class __.__ dict__?

    python pandas rank by column

    Как я могу зарегистрировать однопользовательский процесс регистрации Django (вместо двух шагов) с обязательным по электронной почте?

    Просмотр списка без в Python

    Не удается отправить электронные письма с помощью pyramid_mailer и gmail.

    проверьте, является ли переменная dataframe

    Python - лучший язык программирования в мире.