"xml.sax.saxutils" --- SAX 工具程式
***********************************

**原始碼：**Lib/xml/sax/saxutils.py

======================================================================

模組 "xml.sax.saxutils" 包含了許多在建立 SAX 應用程式時非常有用的類別
和函式，這些類別和函式可以直接使用，也可以作為基底類別。

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

   在資料字串中跳脫 "'&'"、"'<'" 及 "'>'"。

   你可以透過傳入字典作為可選的 *entities* 參數，來跳脫其他資料字串。
   鍵和值都必須是字串；每個鍵都會被對應的值取代。即使提供 *entities*，
   "'&'"、"'<'" 和 "'>'" 字元始終會被跳脫。

   備註:

     這個函式只能用來跳脫 XML 中無法直接使用的字元。請勿將此函式用作一
     般的字串轉換函式。

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

   取消跳脫資料字串中的 "'&amp;'"、"'&lt;'" 和 "'&gt;'"。

   你可以透過傳入字典作為可選的 *entities* 參數，來取消其他字串的資料
   。鍵和值都必須是字串；每個鍵都會被對應的值取代。即使提供了
   *entities*，"'&amp;'"、"'&lt;’" 和 "‘&gt;'" 總是會取消跳脫。

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

   類似於 "escape()"，但也準備 *data* 作為屬性值。"quoteattr()" 會根據
   *data* 的內容選擇引號字元，嘗試避免在字串中編碼任何引號字元。如果
   *data* 中已經有單引號和雙引號字元，雙引號字元將被編碼，而 *data* 將
   被雙引號包覆。結果字串可直接用作屬性值：

      >>> 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"（預設值），它們會以一對開始/
   結束（start/end）標籤的形式輸出；如果設定為 "True"，它們會以單一自
   封（self-closed）標籤的形式輸出。

   在 3.2 版的變更: 新增 *short_empty_elements* 參數。

class xml.sax.saxutils.XMLFilterBase(base)

   這個類別的設計是在 "XMLReader" 與用戶端應用程式的事件處理程式之間。
   預設情況下，它什麼都不做，只是將要求傳送到閱讀器，並將事件未經修改
   地傳送到處理程式，但子類別可以覆寫特定的方法，以在傳送它們的時候修
   改事件串流或配置請求。

   getParent()

      Return the parent reader, or "None" if it is not set.

   setParent(parent)

      Set the parent reader, which the events are read from.

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

   這個函式接收一個輸入來源和一個可選的基底 URL，並回傳一個完全解析的
   "InputSource" 物件，以準備讀取。輸入來源可以是字串、類檔案物件或
   "InputSource" 物件；剖析器會使用這個函式來實作它們的 "parse()" 方法
   的多型 *source* 引數。
