【Python】XMLに要素を追加する(ElementTree)

スポンサーリンク

Pythonでは、XMLに要素を追加することができます。XMLに要素を追加するには、xml.etree.ElementTree モジュールのSubElement関数を使います。

今回は、PythonでXMLに要素を追加するxml.etree.ElementTree モジュールのSubElement関数の使い方を解説します。

XMLを新規に追加するパターンと、既存のXMLに要素を追加するパターンを解説します。

新規XMLに要素を追加する SubElement・Element

まずは新規にXMLを作成して要素を追加するパターンです。

要素を追加する

import xml.etree.ElementTree as ET

# 親要素を追加する 
sports = ET.Element('sports') 

# 子要素1を追加する 
s_name = ET.SubElement(sports, 'name') 

# 子要素2を追加する 
s_orgin = ET.SubElement(sports, 'orgin') 

# 孫要素を追加する 
s_orginyear = ET.SubElement(s_orgin, 'orgin_year')

XMLファイルを保存する

# XML保存する 
tree = ET.ElementTree(sports)
tree.write('C:\pg\sports.xml')

作成されたXMLファイル

<!-- C:\pg\sports.xml -->
<sports>
  <name />
  <orgin>
    <orgin_year />
  </orgin>
</sports>

Pythonでxml.etree.ElementTree モジュールを使って新規XMLファイルを作成しました。

要素を追加するには、ElementSubElement を使います。

親要素を追加するには、Element(親要素名)を使います。子要素・孫要素を追加するには、SubElement(親要素, 子要素名)を使います。

新規で作成したXMLファイルを保存するには、ElementTreewrite します。

作成済みXMLに要素を追加する SubElement

次は、すでにあるXMLに要素を追加するパターンです。

sports.xml

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

このサンプルXMLに要素を追加していきます。

XMLファイルを解析

import xml.etree.ElementTree as ET

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

# ツリーを取得
root = tree.getroot()

要素を追加

for sport in root.findall('sport'):
    # 新規要素「population」を子要素に追加する 
    s_population = ET.SubElement(sport, 'population') 

    # 要素「population」にテキストを設定する 
    name = sport.find('name').text
    if name == 'サッカー':
        s_population.text = '25000'
    elif  name == '野球':
        s_population.text = '3000'
tree = ET.ElementTree(root)

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

要素「sport」の直下に要素「population」を追加しました。

PythonでXMLの要素を追加するには、SubElement を使います。SubElement(親要素,  子要素名)とします。

新規に追加した要素「population」にはテキストを追加しました。テキストはtext で追加します。

XML保存

# ツリー反映
tree = ET.ElementTree(root)

# XML保存
tree.write('C:\pg\sports.xml', encoding="UTF-8")

最後にツリーをXMLに反映して完了です。

sports.xml

<?xml version="1.0" encoding="UTF-8" ?>
<sports>
  <sport>
    <name>サッカー</name>
    <orgin>イングランド</orgin>
    <population>25000</population> 
  </sport>
  <sport>
    <name>野球</name>
    <orgin>アメリカ</orgin>
    <population>3000</population> 
  </sport>
</sports>

XMLの確認すると、要素「population」が追加され、テキストも追加されました。

 

参考ページhttps://docs.python.jp/3/library/xml.etree.elementtree.html

以上、PythonでXMLに要素を追加するxml.etree.ElementTree モジュールのSubElement関数の使い方でした。

コメント