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

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

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