# 20.11. `xml.sax.saxutils` - SAX工具

源代码： Lib / xml / sax / saxutils.py

模块`xml.sax.saxutils`包含许多类和函数，这些类和函数在创建直接使用或作为基类的SAX应用程序时通常很有用。

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

  Escape `'&'`, `'<'`, and `'>'` in a string of data.

  您可以通过将字典作为可选的实体参数转义其他字符串数据。键和值都必须是字符串；每个键将被其相应的值替换。The characters `'&'`, `'<'` and `'>'` are always escaped, even if entities is provided.

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

  在数据字符串中取消转义`'&amp;'`，`'&lt;'`和`'&gt;'`。

  您可以通过传递字典作为可选的实体参数来取消转义其他数据字符串。键和值都必须是字符串；每个键将被其相应的值替换。`'&amp'`, `'&lt;'`, and `'&gt;'` are always unescaped, even if entities is provided.

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

  类似于`escape()`，但也准备数据以用作属性值。返回值是带有任何其他所需替换的数据的引用版本。`quoteattr()`将根据数据的内容选择引用字符，尝试避免对字符串中的任何引号字符进行编码。如果单引号和双引号字符都已在数据中，则双引号字符将被编码，并且数据将包含在双引号中。结果字符串可以直接用作属性值：

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

  当使用引用具体语法为HTML或任何SGML生成属性值时，此函数很有用。

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

  此类通过将SAX事件写回XML文档来实现`ContentHandler`接口。换句话说，使用`XMLGenerator`作为内容处理程序将再现正在解析的原始文档。out应该是一个类似文件的对象，默认为sys.stdout。encoding是输出流的编码，默认为`'iso-8859-1'`。short_empty_elements控制不包含内容的元素的格式：如果False（默认值），则它们作为一对开始/结束标记发出，如果设置为True 它们作为单个自封闭标签发出。

  版本3.2中的新功能： short_empty_elements参数。

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

  此类设计为位于`XMLReader`和客户端应用程序的事件处理程序之间。默认情况下，它不做任何事情，只是将读取器和事件传递到处理程序，但是子类可以重写特定的方法来修改事件流或配置请求。

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

  此函数接受一个输入源和一个可选的基址URL，并返回一个完全解析的`InputSource`对象，可以读取。输入源可以作为字符串，类文件对象或`InputSource`对象提供；解析器将使用此函数为其`parse()`方法实现多态源参数。