0
0

XMLについて調べてみた

Posted at

XMLの基礎と使用例

  1. XMLとは?
    XMLは、データを構造化して保存・輸送するための言語です。HTMLと同様に、XMLもタグを使用しますが、HTMLがデータの表示を主に目的としているのに対し、XMLはデータの構造化を目的としています。
  2. XMLの構文
    XMLはタグでデータを囲みます。タグは、開始タグ<tag>と終了タグ</tag>で構成され、タグの間にはデータが入ります。属性は開始タグに追加できます。
<person age="30">
    <name>John Doe</name>
    <city>New York</city>
</person>

この例では、personはageという属性を持ち、nameタグとcityタグを子として持っています。
3. XMLの例

<employees>
    <employee id="1">
        <name>John Doe</name>
        <position>Software Engineer</position>
    </employee>
    <employee id="2">
        <name>Jane Doe</name>
        <position>Data Scientist</position>
    </employee>
</employees>

このXML文書は、2人の従業員のリストを表しています。

PythonでXMLをパースするには、xml.etree.ElementTreeモジュールを使用できます。

import xml.etree.ElementTree as ET

# XML形式の文字列を定義
xml_string = '''
<employees>
    <employee id="1">
        <name>John Doe</name>
        <position>Software Engineer</position>
    </employee>
    <employee id="2">
        <name>Jane Doe</name>
        <position>Data Scientist</position>
    </employee>
</employees>
'''

# 文字列からXMLのElementTreeオブジェクトを生成
root = ET.fromstring(xml_string)

# 各<employee>要素を走査
for employee in root.findall('employee'):
    # id属性を取得
    id = employee.get('id')
    # <name>と<position>の子要素のテキストを取得
    name = employee.find('name').text
    position = employee.find('position').text
    # 結果をプリントアウト
    print(f"ID: {id}, Name: {name}, Position: {position}")

'''

root = ET.fromstring(xml_string)

for employee in root.findall('employee'):
    id = employee.get('id')
    name = employee.find('name').text
    position = employee.find('position').text
    print(f"ID: {id}, Name: {name}, Position: {position}")

4. PythonでのXMLの生成

PythonでXMLを生成するにも、xml.etree.ElementTreeモジュールを使用できます。

import xml.etree.ElementTree as ET

root = ET.Element("employees")

employee1 = ET.SubElement(root, "employee", id="1")
name1 = ET.SubElement(employee1, "name")
name1.text = "John Doe"
position1 = ET.SubElement(employee1, "position")
position1.text = "Software Engineer"

employee2 = ET.SubElement(root, "employee", id="2")
name2 = ET.SubElement(employee2, "name")
name2.text = "Jane Doe"
position2 = ET.SubElement(employee2, "position")
position2.text = "Data Scientist"

tree = ET.ElementTree(root)
tree.write("employees.xml")

このコードはemployees.xmlファイルを生成し、その内容は3. XMLの例のセクションにあるXML文書と同じになります。

HTMLとXMLの違い

HTMLとXMLは両方ともマークアップ言語ですが、主な違いは以下の通りです。

  1. 目的

    • HTML:ウェブページの構造を記述し、ブラウザで表示するための言語です。
    • XML:データを構造化し、記述するための言語です。主にデータの保存や輸送に使用されます。
  2. 構文の厳密さ

    • HTML:比較的寛容で、エラーに対して許容範囲が広いです。閉じタグの省略など、いくつかの緩い記述が許されます。
    • XML:非常に厳密で、すべてのエラーが許されません。開始タグと終了タグは必ず一致しなければなりませんし、正確にネストされていなければなりません。
  3. タグの定義

    • HTML:予め定義されたタグセット(例: <p>, <div>, <span> など)を使用します。
    • XML:ユーザーがタグを自由に定義できます。これにより、XMLは非常に柔軟性があります。
  4. メタデータ

    • HTML:メタデータ(データのデータ)の使用が限定的です。
    • XML:メタデータの使用が一般的であり、XML文書自体がメタデータを含むことができます。
  5. 表示

    • HTML:主にウェブブラウジングのコンテキストで、データの表示を目的としています。
    • XML:データの輸送や構造化を目的とし、表示は主な目的ではありません。

これらの違いにより、HTMLはウェブページのマークアップに特化し、XMLはデータ交換のためのマークアップ言語として設計されています。

6. まとめ

XMLは、データの構造化と輸送に使われる言語で、Pythonではxml.etree.ElementTreeモジュールを使ってパースや生成ができます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0