Hướng dẫn create xml file python

Trước khi đọc bài này, các bạn nên đọc bài Đọc (read) file XML với Python để biết khái niệm cơ bản của XML cũng như cách đọc một file XML. Với những kiến thức đó, các bạn sẽ dễ dàng hiểu được những cách ghi (write) file XML trong Python.

1. Ghi (write) file XML với ElementTree

Module ElementTree là một công cụ tuyệt với để giúp ghi dữ liệu vào file XML. Các bước để tạo file XML và ghi dữ liệu vào file XML với ElementTree như sau:

Bước 1. Tạo ra một thẻ root trong file XML.

Bước 2. Sử dụng hàm SubElement() để tạo ra các thẻ con nằm trong thẻ root với cú pháp sau:

SubElement(parent, tag, attrib={}, **extra)

Trong đó, parent là tên của thẻ root, tag là tên của thẻ con nằm trong thẻ root. attrib là một dictionary chứa các thuộc tính của thẻ con. extra chứa những thuộc tính bổ sung.

Hàm SubElement() sẽ trả về một đối tượng là một thẻ mới.

Bước 3. Chúng ta có thể sử dụng hàm set() để thêm các thuộc tính cho thẻ mới được tạo ra. Text của một thẻ được gán với thuộc tính text.

import xml.etree.ElementTree as ET

# create the file structure
data = ET.Element('data')

items = ET.SubElement(data, 'items')

item1 = ET.SubElement(items, 'item')
item2 = ET.SubElement(items, 'item')
item3 = ET.SubElement(items, 'item')

item1.set('name', 'item1')
item1.set('price', '5')
item2.set('name','item2')
item2.set('price','15')
item3.set('name', 'item3')
item3.set('price','20')

item1.text = 'book'
item2.text = 'chair'
item3.text = 'window'

# create a new XML file
mydata = ET.tostring(data, encoding='unicode')
myxmlfile = open("items2.xml", "w")
myxmlfile.write(mydata)
myxmlfile.close()
Kết quả nội dung của file items2.xml được tạo ra
bookchairwindow

2. Ghi (write) file XML với minidom

Với minidom, các thẻ trong file XML được xem như là các đối tượng (object). Các bước để tạo file XML và ghi dữ liệu vào file XML với minidom như sau:

Bước 1. Sử dụng hàm Document() để tạo một tài liệu XML.

Bước 2. Tạo một đối tượng gốc đại diện cho thẻ root trong file XML bằng cách dùng hàm createElement(). Nối thẻ root vào file XML bằng hàm appendChild().

Bước 3. Tạo các đối tượng con đại diện cho các thẻ con nằm trong thẻ root cũng với hàm createElement(). Sử dụng hàm setAttribute() để thiết lập thuộc tính (nếu có) cho các thẻ con.

Bước 4. Nối các thẻ con vào file XML bằng hàm appendChild().

from xml.dom import minidom

# create a xml document  
root = minidom.Document()
# create data tag as root tag
data = root.createElement('data')
root.appendChild(data)

# create child tag of data tag
items = root.createElement('items')
data.appendChild(items)

# create child tag of items
item1 = root.createElement('item')
item1.setAttribute('name', 'item1')
item1.setAttribute('price', '5')
item1.Text = 'book'
items.appendChild(item1)
item1Text = root.createTextNode("book")
item1.appendChild(item1Text)

item2 = root.createElement('item')
item2.setAttribute('name', 'item2')
item2.setAttribute('price', '15')
items.appendChild(item2)
item2Text = root.createTextNode("chair")
item2.appendChild(item2Text)

item3 = root.createElement('item')
item3.setAttribute('name', 'item3')
item3.setAttribute('price', '20')
items.appendChild(item3)
item3Text = root.createTextNode("window")
item3.appendChild(item3Text)

# create a new XML file
mydata = root.toprettyxml(indent ="\t")
myxmlfile = open("items2.xml", "w")
myxmlfile.write(mydata)
myxmlfile.close()
Kết quả nội dung của file items2.xml được tạo ra


    
        book
        chair
        window
    

3. Ghi (write) file XML với BeautifulSoup

Chúng ta cũng có thể sử dụng BeautifulSoup để tạo và ghi một file XML. Các bước để tạo file XML và ghi dữ liệu vào file XML với BeautifulSoup như sau:

Bước 1. Sử dụng hàm BeautifulSoup(features='xml') để tạo một tài liệu XML rỗng.

Bước 2. Tạo một tag mới bằng cách dùng hàm new_tag(). Nối tag mới vào file XML bằng hàm append().

Bước 3. Tạo các thẻ con nằm trong thẻ đã tạo cũng với hàm new_tag(). Sử dụng thuộc tính string để thiết lập văn bản (text) cho các thẻ con. Thiết lập thuộc tính cho thẻ con bằng cách sử dụng dấu ngoặc vuông [] và gán giá trị cho thuộc tính đó.

Bước 4. Nối các thẻ con vào file XML bằng hàm append().

  • Đọc (read) file JSON với Python
  • Kỹ thuật cấp phát bộ nhớ động và minh họa với C++
  • Biến toàn cục và biến cục bộ trong chương trình
  • Sử dụng bộ đếm CSS Counters trong CSS
  • Khái niệm biến (variable) và cách khai báo biến trong Java

from bs4 import BeautifulSoup

# create an empty xml document
soup = BeautifulSoup(features='xml')

# create data tag as root tag
data = soup.new_tag("data")
soup.append(data)

# create child tag of data tag
items = soup.new_tag("items")
data.append(items)

# create child tag of items
item1 = soup.new_tag('item')
item1.string = "book"
item1["name"] = "item1"
item1["price"] = "5"
items.append(item1)
item2 = soup.new_tag('item')
item2.string = "chair"
item2["name"] = "item2"
item2["price"] = "15"
items.append(item2)
item3 = soup.new_tag('item')
item3.string = "window"
item3["name"] = "item3"
item3["price"] = "20"
items.append(item3)

# create a new XML file
myxmlfile = open("items2.xml", "w")
myxmlfile.write(soup.prettify())
myxmlfile.close()
Kết quả nội dung của file items2.xml được tạo ra


 
  
   book
  
  
   chair
  
  
   window