Elementtree

elementtree.png

class xml.etree.ElementTree.ElementTree(element=None, file=None)
ElementTree ラッパークラスです。このクラスは要素の全階層を表現し、さらに標準 XML との相互変換を追加しています。

element は根要素です。木は file が与えられればその XML の内容により初期化されます。

_setroot(element) この木の根要素を置き換えます。従って現在の木の内容は破棄され、与えられた要素が代わりに使われます。注意して使ってください。element は要素インスタンスです。
find(match, namespaces=None) Element.find() と同じで、木の根要素を起点とします。
findall(match, namespaces=None) Element.findall() と同じで、木の根要素を起点とします。
findtext(match, default=None, namespaces=None) Element.findtext() と同じで、木の根要素を起点とします。
getiterator(tag=None) バージョン 3.2 で撤廃: Use method ElementTree.iter() instead.
getroot() この木の根要素を返します。
iter(tag=None) 根要素に対する、木を巡回するイテレータを返します。イテレータは木のすべての要素に渡ってセクション順にループします。tag は探したいタグです (デフォルトではすべての要素を返します)。
iterfind(match, namespaces=None) Element.iterfind() と同じで、木の根要素を起点とします。
parse(source, parser=None) 外部の XML 断片をこの要素木に入れます。source にはファイル名か ファイルオブジェクト を指定します。parser はオプションで、パーザインスタンスを指定します。パーザが指定されない場合、標準の XMLParser パーザが使用されます。断片の根要素を返します。
write(file, encoding="us-ascii", xml_declaration=None, default_namespace=None, method="xml", *, short_empty_elements=True) Writes the element tree to a file, as XML. file is a file name, or a file object opened for writing.

encoding [1] is the output encoding (default is US-ASCII). xml_declaration controls if an XML declaration should be added to the file. Use False for never, True for always, None for only if not US-ASCII or UTF-8 or Unicode (default is None). default_namespace sets the default XML namespace (for “xmlns”). method is either "xml", "html" or "text" (default is "xml"). The keyword-only short_empty_elements parameter controls the formatting of elements that contain no content. If True (the default), they are emitted as a single self-closed tag, otherwise they are emitted as a pair of start/end tags.

出力は引数 encoding によって、文字列 (str) かバイト列 (bytes) になります。encoding が "unicode" の場合、出力は文字列になり、それ以外ではバイト列になります。file が ファイルオブジェクト の場合、型が衝突する場合があります。文字列をバイト列ファイルへ書き込んだり、その逆を行わないよう注意してください。

バージョン 3.4 で追加: The short_empty_elements parameter.

以下はこれから操作する XML ファイルです:

<html>
    <head>
        <title>Example page</title>
    </head>
    <body>
        <p>Moved to <a href="http://example.org/">example.org</a>
        or <a href="http://example.com/">example.com</a>.</p>
    </body>
</html>

第 1 段落のすべてのリンクの “target” 属性を変更する例:

from xml.etree.ElementTree import ElementTree
tree = ElementTree()
tree.parse("index.xhtml")

<Element 'html' at 0xb77e6fac>

p = tree.find("body/p") # Finds first occurrence of tag p in body
p

<Element 'p' at 0xb77ec26c>

links = list(p.iter("a")) # Returns list of all links
links

[<Element 'a' at 0xb77ec2ac>, <Element 'a' at 0xb77ec1cc>]

for i in links: # Iterates through all found links

… i.attrib["target"] = "blank"

tree.write("output.xhtml")

サポートサイト Wikidot.com