【Python入門】XMLデータの基本操作方法をマスターしよう!

Python

Pythonでは、XML(Extensible Markup Language)形式のデータを簡単に扱うためのライブラリがいくつか用意されています。この記事では、標準ライブラリである xml.etree.ElementTree を使って、XMLの読み込み・検索・追加・削除・書き出しまでの基本操作を解説します。

スポンサーリンク
スポンサーリンク

「XML」とは?

「XML(Extensible Markup Language)」とは、テキストデータを元にした形式であり、汎用的なフォーマットとして広く普及しています。設定ファイルやデータのやり取り(APIレスポンスなど)によく使用されます。

スクレイピングした情報を解析する場合には「BeautifulSoup」を用いることが可能です。

例:sample.xml
<data>
  <user id="1">
    <name>山田太郎</name>
    <email>taro@example.com</email>
  </user>
  <user id="2">
    <name>鈴木花子</name>
    <email>hanako@example.com</email>
  </user>
</data>

「XML」を用いた使用例

以下のプログラムは予め保存した「XML」データを用意して、そのデータを解析して出力する内容となっています。

基本:XMLの読み込み

import xml.etree.ElementTree as ET

tree = ET.parse('sample.xml')
root = tree.getroot()

print(root.tag) 

結果

data

要素の検索

import xml.etree.ElementTree as ET

tree = ET.parse('sample.xml')
root = tree.getroot()

for user in root.findall('user'):
    name = user.find('name').text
    email = user.find('email').text
    user_id = user.get('id')
    print(f"{user_id}: {name} - {email}")

結果

1: 山田太郎 - taro@example.com
2: 鈴木花子 - hanako@example.com

要素の追加

import xml.etree.ElementTree as ET

tree = ET.parse('sample.xml')
root = tree.getroot()

new_user = ET.Element('user', id='3')
ET.SubElement(new_user, 'name').text = '田中一郎'
ET.SubElement(new_user, 'email').text = 'ichiro@example.com'
root.append(new_user)

要素の削除

import xml.etree.ElementTree as ET

tree = ET.parse('sample.xml')
root = tree.getroot()

for user in root.findall('user'):
    if user.get('id') == '1':
        root.remove(user)

XMLファイルに書き出す

import xml.etree.ElementTree as ET

tree = ET.parse('sample.xml')
root = tree.getroot()

tree.write('updated_sample.xml', encoding='utf-8', xml_declaration=True)

応用:文字列としてパース

import xml.etree.ElementTree as ET

xml_string = '''
<item>
  <title>記事タイトル</title>
  <url>https://example.com</url>
</item>
'''

root = ET.fromstring(xml_string)
print(root.find('title').text) 

結果

記事タイトル

まとめ

操作内容メソッド例
読み込みET.parse()ET.fromstring()
ルート取得.getroot()
検索.find()、.findall()
追加ET.SubElement()
削除.remove()
書き出し.write()

こんな方におすすめ

  • XML形式の設定ファイルやデータを扱う方
  • APIレスポンスがXMLのシステムを触る方
  • JSONと並んで構造化データを習得したい方

おまけ:JSONとの違い

特徴XMLJSON
構文タグベースキーと値のペア
可読性やや複雑シンプル
利用シーン古いシステム / デバイス間通信などWeb APIやJavaScript全般

次に読む:【Python初心者向け】JSONファイルの読み書き入門

タイトルとURLをコピーしました