# 20.11. `xml.sax.saxutils` — Utilitaires SAX

Code source : Lib/xml/sax/saxutils.py

Le module `xml.sax.saxutils` contient des classes et fonctions qui sont fréquemment utiles en créant des applications SAX, soit en utilisation directe, soit en classes de base.

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

  Échappe `'&'`, `'<'`, et `'>'` dans une chaine de caractères de données.

  Vous pouvez échapper d’autres chaines de caractères de données en passant un dictionnaire au paramètre optionnel entities. Les clés et valeurs doivent toutes être des chaines de caractères ; chaque clé sera remplacée par sa valeur correspondante. Les caractères `'&'`, `'<'` et `'>'` sont toujours échappés même si entities est donné en paramètre.

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

  Parse `'&amp;'`, `'&lt;'`, et `'&gt;'` dans une chaine de caractères de données.

  Vous pouvez dé-échapper d’autres chaines de caractères de données en passant un dictionnaire au paramètre optionnel entities. Les clés et valeurs doivent toutes être des chaines de caractères ; chaque clé sera remplacée par sa valeur correspondante. Les caractères `'&'`, `'<'` et `'>'` sont toujours dé-échappés même si entities est donné en paramètre.

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

  Similaire à `escape()`, mais prépare aussi data pour être utilisé comme une valeur d’attribut. La valeur renvoyée est une version entre guillemets de data avec tous les remplacements supplémentaires nécessaires. `quoteattr()` va sélectionner un caractère guillemet basé sur le contenu de data, en essayant d’éviter d’encoder tous les caractères guillemets dans la chaine de caractères. Si les caractères guillemet simple et guillemets sont déjà dans data, les caractères guillemets simples seront encodés et data sera entouré de guillemets. La chaine de caractères résultante pourra être utilisée en tant que valeur d’attribut :

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

  Cette fonction est utile quand vous générez des valeurs d’attributs pour du HTML ou n’importe quel SGML en utilisant la syntaxe concrète de référence.

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

  Cette classe implémente l’interface `ContentHandler` en écrivant les événements SAX dans un document XML. En d’autres termes, utiliser un `XMLGenerator` en tant que gestionnaire de contenu reproduira le document original qui était analysé. out devrait être un objet de type fichier qui est par défaut sys.stdout. encoding est l’encodage du flux de sortie qui est par défaut `'iso-8859-1'`. short_empty_elements contrôle le formatage des éléments qui ne contiennent rien : si `False` (par défaut), ils sont émis comme une paire de balises (début, fin). Si la valeur est `True`, ils sont émis comme une balise seule auto-fermante.

  Nouveau dans la version 3.2: Le paramètre short_empty_elements.

class `xml.sax.saxutils.``XMLFilterBase`(base)

  Cette classe est faite pour être entre `XMLReader` et le gestionnaire des événements de l’application client. Par défaut, elle ne fait rien mais passe les requêtes au lecteur et les événements au gestionnaire sans les modifier, mais des sous-classes peuvent surcharger des méthodes spécifiques pour modifier le flux d’événements ou la configuration des requêtes à leur passage.

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

  Cette fonction prend en entrée une source et une URL de base optionnelle et retourne un objet complétement résolue `InputSource` prêt pour être lu. La source d’entrée peut être donnée comme une chaine de caractère, un objet type fichier, ou un objet `InputSource` ; Les analyseurs utiliseront cette fonction pour gérer le polymorphisme de l’argument source à leur méthode `parse()`.