バージョン 2.0 で 新たに追加 された仕様です。
xml.parsers.expat モジュールは、検証 (validation) を 行わない XML パーザ (parser, 解析器)、Expat への Python インタフェースです。 モジュールは一つの拡張型 xmlparser を提供します。これは XMLパーザの現在の状況を表します。一旦 xmlparser オブジェクトを 生成すると、オブジェクトの様々な属性をハンドラ関数 (handler function) に設定できます。 その後、XML 文書をパーザに入力すると、 XML文書の文字列とマークアップ に応じてハンドラ関数が呼び出されます。
このモジュールでは、Expatパーザへのアクセスを提供するために pyexpatモジュールを使用します。 pyexpatモジュールの直接使用は撤廃されています。
このモジュールは、例外を一つと型オブジェクトを一つ提供しています。
xml.parsers.expat モジュールには以下の 2 つの関数が収められて います:
errno) |
[encoding[, namespace_separator]]) |
Expat はオプションで XML 名前空間の処理を行うことができます。
これは引数 namespace_separator に値を指定することで
有効になります。
この値は、1文字の文字列でなければなりません; 文字列が誤った長さ
を持つ場合には ValueError が送出されます (None
は
値の省略と見なされます) 名前空間の処理が可能なとき、名前空間に属する
要素と属性が展開されます。要素のハンドラである
StartElementHandler と EndElementHandler に渡された
要素名は、名前空間のURI、名前空間の区切り文字、要素名のローカル部を
連結したものになります。名前空間の区切り文字が 0 バイト
(chr(0)
) の場合、名前空間の URI とローカル部は区切り文字なしで
連結されます。
たとえば、 namespace_separator に空白文字(" ")がセットされ、 次のような文書が解析されるとします。
<?xml version="1.0"?> <root xmlns = "http://default-namespace.org/" xmlns:py = "http://www.python.org/ns/"> <py:elem1 /> <elem2 xmlns="" /> </root>
StartElementHandler は各要素ごとに次のような文字列を受け取ります。
http://default-namespace.org/ root http://www.python.org/ns/ elem1 elem2
参考: