转载:【Python】XML の要素・属性・内容を削除する (ElementTree) | 鎖プログラム

# サンプル XML

# sports.xml

1
2
3
4
5
6
7
8
9
10
11
<?xml version="1.0" encoding="UTF-8" ?>
<sports>
<sport order="001">
<name>サッカー</name>
<orgin>イングランド</orgin>
</sport>
<sport order="002">
<name>野球</name>
<orgin>アメリカ</orgin>
</sport>
</sports>

このサンプル XML を削除していきます。

# XML を解析する

1
2
3
4
5
6
7
import xml.etree.ElementTree as ET

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

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

まずは XML を解析します。XML ファイルを parse で解析し、getroot で XML のルートを取得します。

# XML の要素を削除する remove

1
2
3
4
5
6
7
# 要素を削除する
for sport in root.findall('sport'):
for orgin in sport.findall('orgin'):
sport.remove(orgin)

# XMLファイルに保存
tree.write('C:\pg\sports.xml')

# 削除(remove)後の XML

1
2
3
4
5
6
7
8
9
<?xml version="1.0" encoding="UTF-8" ?>
<sports>
<sport order="001">
<name>サッカー</name>
</sport>
<sport order="002">
<name>野球</name>
</sport>
</sports>

XML の要素を削除するには、remove を使います。

remove は「親要素.remove (削除する子要素)」と指定します。要素「sport」を findall で取り出し、その要素の中の要素「orgin」をさらに findall で取り出しました。

ここでは要素「orgin」を削除しました。

# XML の属性を削除する pop

1
2
3
4
5
6
# 属性を削除する 
for sport in root.iter('sport'):
sport.attrib.pop("order", None)

# XMLファイルに保存
tree.write('C:\pg\sports.xml')

# 削除(pop)後の XML

1
2
3
4
5
6
7
8
9
<?xml version="1.0" encoding="UTF-8" ?>
<sports>
<sport>
<name>サッカー</name>
</sport>
<sport>
<name>野球</name>
</sport>
</sports>

XML の属性を削除するには、pop を使います。

ここでは要素「sport」にある属性「order」を削除しました。

# XML のデータ(テキスト、コンテンツ)を削除(クリア)する

1
2
3
4
5
6
# 内容の削除
for name in root.iter('name'):
name.text = ''

# XMLファイルに保存
tree.write('C:\pg\sports.xml')

# 削除後の XML

1
2
3
4
5
6
7
8
9
<?xml version="1.0" encoding="UTF-8" ?>
<sports>
<sport>
</name>
</sport>
<sport>
</name>
</sport>
</sports>

XML の要素・属性ではなく、データ(テキスト)自体をを削除するには、text を使います。

ここでは要素「name」にあるテキストを削除(クリア)しました。

# XML の要素・属性・テキストを一括で削除する

1
2
3
4
5
# 要素・属性・テキストをすべて削除する
root.clear()

# XMLファイルに保存
tree.write('C:\pg\sports.xml')

# 削除後の XML

1
2
<?xml version="1.0"?>
<sports/>

XML の要素・属性・テキストをすべて削除するには、clear を使います。

これで Python の XML の削除するパターンとして、要素の削除・属性の削除・内容の削除の3パターンの削除を実行することができました。

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

以上、Python で XML の要素・属性・内容を削除する方法でした。

Edited on