xml.sax.saxutils --- SAX 工具集?

源代碼: Lib/xml/sax/saxutils.py


xml.sax.saxutils 模塊包含一些在創(chuàng )建 SAX 應用程序時(shí)十分有用的類(lèi)和函數,它們可以被直接使用,或者是作為基類(lèi)使用。

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

對數據字符串中的 '&', '<''>' 進(jìn)行轉義。

你可以通過(guò)傳入一個(gè)字典作為可選的 entities 形參來(lái)對其他字符串數據進(jìn)行轉義。 字典的鍵和值必須為字符串;每個(gè)鍵將被替換為其所對應的值。 字符 '&', '<''>' 總是會(huì )被轉義,即使提供了 entities。

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

對字符串數據中的 '&amp;', '&lt;''&gt;' 進(jìn)行反轉義。

你可以通過(guò)傳入一個(gè)字典作為可選的 entities 形參來(lái)對其他數據字符串進(jìn)行轉義。 字典的鍵和值必須都為字符串;每個(gè)鍵將被替換為所對應的值。 '&amp', '&lt;''&gt;' 將總是保持不被轉義,即使提供了 entities。

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

類(lèi)似于 escape(),但還會(huì )對 data 進(jìn)行處理以將其用作屬性值。 返回值是 data 加上任何額外要求的替換的帶引號版本。quoteattr() 將基于 data 的內容選擇一個(gè)引號字符,以盡量避免在字符串中編碼任何引號字符。 如果單雙引號字符在 data 中都存在,則雙引號字符將被編碼并且 data 將使用雙引號來(lái)標記。 結果字符串可被直接用作屬性值:

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

此函數適用于為 HTML 或任何使用引用實(shí)體語(yǔ)法的 SGML 生成屬性值。

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

這個(gè)類(lèi)通過(guò)將 SAX 事件寫(xiě)回到 XML 文檔來(lái)實(shí)現 ContentHandler 接口。 換句話(huà)說(shuō),使用 XMLGenerator 作為內容處理程序將重新產(chǎn)生所解析的原始文檔。 out 應當為一個(gè)文件類(lèi)對象,它默認將為 sys.stdout。 encoding 為輸出流的編碼格式,它默認將為 'iso-8859-1'。 short_empty_elements 控制不包含內容的元素的格式化:如為 False (默認值) 則它們會(huì )以開(kāi)始/結束標記對的形式被發(fā)送,如果設為 True 則它們會(huì )以單個(gè)自結束標記的形式被發(fā)送。

3.2 新版功能: short_empty_elements 形參。

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

這個(gè)類(lèi)被設計用來(lái)分隔 XMLReader 和客戶(hù)端應用的事件處理程序。 在默認情況下,它除了將請求傳送給讀取器并將事件傳送給處理程序之外什么都不做,但其子類(lèi)可以重載特定的方法以在傳送它們的時(shí)候修改事件流或配置請求。

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

此函數接受一個(gè)輸入源和一個(gè)可選的基準 URL 并返回一個(gè)經(jīng)過(guò)完整解析可供讀取的 InputSource。 輸入源的給出形式可以為字符串、文件類(lèi)對象或 InputSource 對象;解析器將使用此函數來(lái)針對它們的 parse() 方法實(shí)現多態(tài) source 參數。