Elementオブジェクト

python-xml-element.png

コンストラクタ

class xml.etree.ElementTree.Element(tag, attrib={}, **extra)

要素クラスです。この関数は Element インタフェースを定義すると同時に、そのリファレンス実装を提供します。
attributeは辞書で渡す
{"属性名":"","属性名":""}

というかんじで
要素名、属性名、および属性値はバイト文字列でも Unicode 文字列でも構いません。tag には要素名を指定します。attrib はオプションで、要素と属性を含む辞書を指定します。extra は追加の属性で、キーワード引数として与えます。要素インスタンスを返します。

関数名

tag
この要素が表すデータの種類を示す文字列です (言い替えると、要素の型です)。

text
text 属性は要素に結びつけられた付加的なデータを保持するのに使われます。名前が示唆しているようにこの属性は通常文字列ですが、アプリケーション固有のオブジェクトであって構いません。要素が XML ファイルから作られたものならば、この属性は要素タグの間にあるテキストを丸ごと含みます。

tail
tail 属性は要素に結びつけられた付加的なデータを保持するのに使われます。この属性は通常文字列ですが、アプリケーション固有のオブジェクトであって構いません。要素が XML ファイルから作られたものならば、この属性は要素の終了タグと次のタグの直前までの間に見つかったテキストを丸ごと含みます。

attrib
要素の属性を保持する辞書です。attrib の値は常に書き換え可能な Python 辞書ですが、ElementTree の実装によっては別の内部表現を使用し、要求されたときにだけ辞書を作るようにしているかもしれません。そうした実装の利益を享受するために、可能な限り下記の辞書メソッドを通じて使用してください。

以下の辞書風メソッドが要素の属性に対して動作します。

clear() Resets an element. This function removes all subelements, clears all attributes, and sets the text and tail attributes to None.
get(key, default=None) 要素の key という名前の属性を取得します。属性の値、または属性がない場合は default を返します。
items() 要素の属性を (名前, 値) ペアのシーケンスとして返します。返される属性の順番は決まっていません。
keys() 要素の属性名をリストとして返します。返される名前の順番は決まっていません。
set(key, value) 要素の属性 key に value をセットします。

以下のメソッドは要素の子要素 (副要素) に対して動作します。

append(subelement) 要素 subelement を、要素の子要素の内部リストの末尾に追加します。subelement Element でない場合、TypeError を送出します。
extend(subelements) 0 個以上の要素のシーケンスオブジェクトによって subelements を拡張します。subelements が Element でない場合、TypeError を送出します。

バージョン 3.2 で追加.

find(match, namespaces=None)
match にマッチする最初の子要素を検索します。match はタグ名または パス を指定できます。要素インスタンスか None を返します。namespaces はオプションで、名前空間接頭辞から完全名を対応付けるマップオブジェクトを指定します。

findall(match, namespaces=None)
タグ名または パス にマッチするすべての子要素を検索します。マッチしたすべての子要素が文書内の順序で含まれたリストを返します。namespaces はオプションで、名前空間接頭辞から完全名を対応付けるマップオブジェクトを指定します。

findtext(match, default=None, namespaces=None)
match にマッチする最初の子要素のテキストを検索します。match にはタグ名または パス を指定できます。最初にマッチした要素の内容のテキストを返します。マッチする要素が無い場合 default を返します。マッチした要素の内容にテキストがなかった場合空の文字列が返ります。namespaces はオプションで、名前空間接頭辞から完全名を対応付けるマップオブジェクトを指定します。

getchildren()
バージョン 3.2 で撤廃: Use list(elem) or iteration.

getiterator(tag=None)
バージョン 3.2 で撤廃: Use method Element.iter() instead.

insert(index, subelement)
要素内の指定された位置に subelement を挿入します。subelement が Element でない場合、TypeError を送出します。

iter(tag=None)
現在の要素を根とする木の イテレータ を作成します。イテレータは現在の要素とそれ以下のすべての要素を、文書内での出現順 (深さ優先順) でイテレートします。tag が None または '*' でない場合、与えられたタグに等しいものについてのみイテレータから返されます。イテレート中に木構造が変更された場合の結果は未定義です。

バージョン 3.2 で追加.

iterfind(match, namespaces=None)
タグ名または パス にマッチするすべての子要素を検索します。マッチしたすべての要素を文書内での出現順で yield するイテレータを返します。namespaces はオプションで、名前空間接頭辞と完全名を対応付けるマップオブジェクトを指定します。

バージョン 3.2 で追加.

itertext()
テキストのイテレータを作成します。イテレータは、この要素とすべての子要素を文書上の順序で巡回し、すべての内部のテキストを返します。

バージョン 3.2 で追加.

makeelement(tag, attrib)
現在の要素と同じ型の新しい要素オブジェクトを作成します。このメソッドは呼び出さずに、SubElement() ファクトリ関数を使って下さい。

remove(subelement)
要素から subelement を削除します。find* メソッド群と異なり、このメソッドは要素をインスタンスの同一性で比較します。タグや内容では比較しません。

Element objects also support the following sequence type methods for working with subelements: delitem(), getitem(), setitem(), len().

注意: 子要素を持たない要素の真偽値は False になります。この挙動は将来のバージョンで変更されるかもしれません。直接真偽値をテストするのでなく、len(elem) か elem is None を利用してください。:

element = root.find('foo')

if not element: # careful!
print("element not found, or element has no subelements")

if element is None:
print("element not found")

サポートサイト Wikidot.com