Cấu trúc dữ liệu Set trong Python
1. Đặc điểm của Set trong Python Set là cấu trúc dữ liệu giúp lưu trữ...
Kết quả sẽ mở trong tab mới, giới hạn trong website này.
Truy cập nhanh
Tìm kiếm gần đây
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 […]
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.
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()
<data><items><item name="item1" price="5">book</item><item name="item2" price="15">chair</item><item name="item3" price="20">window</item></items></data>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()
<?xml version="1.0" ?>
<data>
<items>
<item name="item1" price="5">book</item>
<item name="item2" price="15">chair</item>
<item name="item3" price="20">window</item>
</items>
</data>
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().
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()
<?xml version="1.0" encoding="utf-8"?>
<data>
<items>
<item name="item1" price="5">
book
</item>
<item name="item2" price="15">
chair
</item>
<item name="item3" price="20">
window
</item>
</items>
</data>