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 を属性値として使える形にします。 必要な置換を加え、引用符で囲んだ data を返します。 quoteattr() は 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 (デフォルト) の場合、開始/終了タグのペアとなり、 True の場合、1つの空タグになります。

バージョン 3.2 で変更: short_empty_elements 引数を追加しました。

class xml.sax.saxutils.XMLFilterBase(base)

このクラスは XMLReader とクライアント・アプリケーションのイベント・ハンドラとの間に位置するものとして設計されています。デフォルトでは何もせず、ただリクエストをリーダに、イベントをハンドラに、それぞれ加工せず渡すだけです。しかし、サブクラスでメソッドをオーバーライドすると、イベント・ストリームやリクエストを加工してから渡すように変更可能です。

getParent()

親リーダを返します。 設定されていなければ None を返します。

setParent(parent)

イベントの読み取り元となる親リーダを設定します。

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

入力ソースと省略可能なベース URL を受け取り、必要な解決をすべて行った読み取り可能な InputSource オブジェクトを返します。 入力ソースには文字列、ファイル風オブジェクト、InputSource オブジェクトを指定できます。 パーサはこの関数を使い、parse() メソッドの source 引数が複数の型を受け取れるように実装します。