PythonのxmlモジュールのElementTreeのルート要素を取得する

PythonのxmlまたはdefusedxmlモジュールのElementTreeオブジェクトのルート要素を、Elementオブジェクトとして取得します。

目次

  1. getrootメソッドでルートを取得する
  2. 実施例

getrootメソッドでルートを取得する

ElementTreeオブジェクトのgetrootメソッドで、根要素のElementオブジェクトを取得できます。

import defusedxml.ElementTree as ET
# import xml.etree.ElementTree as ET # 組み込みのxmlモジュールを使う場合

root = tree.getroot()
変数 内容
tree ElementTree 元のElementTreeオブジェクト。
root Element ElementTreeの根要素。

defusedxmlモジュール は、xmlモジュールと使い方の互換性を保ちつつ、XMLの脆弱性に対処したモジュールです。

実施例

試してみましょう。

下記のXMLファイルをElementTreeとして読み込んで、ルートの子の要素のタグ名と属性を出力します。

<?xml version="1.0" encoding="UTF-8" ?>
<tip>
    <middle id='1'>
        <bottom>content_1</bottom>
    </middle>
    <middle id='2'>
        <!--
        <bottom>content_20</bottom>
        <bottom>content_21</bottom>
        -->
        <bottom>いろは</bottom>
        <bottom>にほへと</bottom>
        <bottom></bottom>
    </middle>
    <middle id='3'>
        content_3
    </middle>
</tip>
import defusedxml.ElementTree as ET

tree = ET.parse('test.xml')
root = tree.getroot()
for i in root:
    print(i.tag, i.attrib)

出力はこうなります。

middle {'id': '1'}
middle {'id': '2'}
middle {'id': '3'}

正しく出力されました。

広告

PythonとXMLカテゴリの投稿