# `xml.sax.saxutils` — Utilitários de SAX

Código-fonte: Lib/xml/sax/saxutils.py

O módulo `xml.sax.saxutils` contém uma série de classes e funções que são comumente úteis ao criar aplicações SAX, seja em uso direto ou como classes base.

xml.sax.saxutils.escape(data, entities={})

  Escapa `'&'`, `'<'` e `'>'` em uma string de dados.

  Você pode escapar outras strings de dados passando um dicionário como o parâmetro opcional entities. As chaves e os valores devem ser strings; cada chave será substituída pelo seu valor correspondente. Os caracteres `'&'`, `'<'` e `'>'` são sempre escapados, mesmo que entities seja fornecido.

  Nota

  Esta função deve ser usada apenas para escapar caracteres que não podem ser usados diretamente em XML. Não a utilize como uma função geral de tradução de strings.

xml.sax.saxutils.unescape(data, entities={})

  Remove escape de `'&amp;'`, `'&lt;'` e `'&gt;'` em uma string de dados.

  Você pode remover escape de outras strings de dados passando um dicionário como o parâmetro opcional entities. As chaves e os valores devem ser strings; cada chave será substituída pelo seu valor correspondente. `'&amp;'`, `'&lt;'` e `'&gt;'` têm sempre o escape removido, mesmo que entities seja fornecido.

xml.sax.saxutils.quoteattr(data, entities={})

  Semelhante a `escape()`, mas também prepara data para ser usado como um valor de atributo. O valor de retorno é uma versão entre aspas de data com quaisquer substituições adicionais necessárias. `quoteattr()` selecionará um caractere de aspas com base no conteúdo de data, tentando evitar a codificação de quaisquer caracteres de aspas na string. Se já houver caracteres de aspas simples e duplas em data, os caracteres de aspas duplas serão codificados e data será colocado entre aspas duplas. A string resultante pode ser usada diretamente como um valor de atributo:

      >>> print("<element attr=%s>" % quoteattr("ab ' cd \" ef"))
      <element attr="ab ' cd &quot; ef">

  Esta função é útil ao gerar valores de atributos para HTML ou qualquer SGML usando a sintaxe concreta de referência.

class xml.sax.saxutils.XMLGenerator(out=None, encoding='iso-8859-1', short_empty_elements=False)

  Esta classe implementa a interface `ContentHandler` escrevendo eventos SAX de volta em um documento XML. Em outras palavras, usar um `XMLGenerator` como manipulador de conteúdo reproduzirá o documento original que está sendo analisado. out deve ser um objeto arquivo ou similar, cujo padrão é sys.stdout. encoding é a codificação do fluxo de saída, cujo padrão é `'iso-8859-1'`. short_empty_elements controla a formatação de elementos sem conteúdo: se `False` (o padrão), eles são emitidos como um par de tags de início/fim; se definido como `True`, eles são emitidos como uma única tag autofechada.

  Alterado na versão 3.2: Foi adicionado o parâmetro short_empty_elements.

class xml.sax.saxutils.XMLFilterBase(base)

  Esta classe foi projetada para ficar entre um `XMLReader` e os manipuladores de eventos da aplicação cliente. Por padrão, ela não faz nada além de passar requisições para o leitor e eventos para os manipuladores sem modificações, mas subclasses podem substituir métodos específicos para modificar o fluxo de eventos ou as requisições de configuração à medida que passam.

xml.sax.saxutils.prepare_input_source(source, base='')

  Esta função recebe uma fonte de entrada e uma URL base opcional e retorna um objeto `InputSource` totalmente resolvido, pronto para leitura. A fonte de entrada pode ser fornecida como uma string, um objeto arquivo ou similar ou um objeto `InputSource`; os analisadores usarão esta função para implementar o argumento polimórfico source em seu método `parse()`.