【Python】XMLの属性を追加・編集する(ElementTree)

スポンサーリンク

Pythonでは、XMLの属性を追加・編集することができます。

XMLを取得して追加・編集するには、「xml.etree.ElementTree」モジュールを使います。

今回は、PythonでXMLの属性を追加・編集するxml.etree.ElementTree モジュールの使い方を解説します。

PythonでXMLの属性を追加・編集

サンプルxml

<!-- C:\pg\sports.xml -->
<?xml version="1.0" encoding="UTF-8" ?>
<sports>
  <sport>
    <name order="001">サッカー</name>
    <orgin>イングランド</orgin>
  </sport>
  <sport>
    <name order="002">野球</name>
    <orgin>アメリカ</orgin>
  </sport>
</sports>

このサンプルXMLを変更していきます。

XMLを取得する

import xml.etree.ElementTree as ET 

# XMLを解析 
tree = ET.parse('C:\pg\sports.xml') 

# XMLを取得 
root = tree.getroot()

まずはPythonでXMLを取得します。parse でXMLを解析し、getroot でツリーのルートを取得します。

属性の編集・変更 set

# 属性の変更 
for name in root.iter('name'):
    if name.text == 'フットボール':
        name.set('order', '1') 
    elif name.text == '野球':
        name.set('order', '2') 

# 保存
tree.write('C:\pg\sports.xml')

属性の編集・変更は、set を使います。「要素.set(属性, 変更後のデータ)」となります。

ここでは「name」属性を1件ずつ取得し、要素名によってセットする属性を変えました。

変更後のXML

<!-- C:\pg\sports.xml -->
<?xml version="1.0" encoding="UTF-8" ?>
<sports>
  <sport>
    <name order="1">サッカー</name>
    <orgin>イングランド</orgin>
  </sport>
  <sport>
    <name order="2">野球</name>
    <orgin>アメリカ</orgin>
  </sport>
</sports>

サンプルXMLの属性の値を編集・変更することができました。

属性の追加 set

# 属性の追加 
for orgin in root.iter('orgin'):
    if orgin.text == 'イングランド':
        orgin.set('order', '1') 
    elif orgin.text == 'アメリカ':
        orgin.set('order', '2') 
# 保存
tree.write('C:\pg\sports.xml')

属性の変更は、set を使います。「要素.set(属性, 変更後のデータ)」となります。

変更後のXML

<!-- C:\pg\sports.xml -->
<?xml version="1.0" encoding="UTF-8" ?>
<sports>
  <sport>
    <name order="1">サッカー</name>
    <orgin order="1">イングランド</orgin>
  </sport>
  <sport>
    <name order="2">野球</name>
    <orgin order="2">アメリカ</orgin>
  </sport>
</sports>

サンプルXMLへ属性を追加することができました。

以上、PythonでXMLの属性を追加・編集するxml.etree.ElementTree モジュールの使い方でした。

コメント