Làm việc với xml trong python

Trong bài viết này, chúng ta sẽ tìm hiểu cách phân tích cú pháp, khám phá, sửa đổi và điền một tệp XML bằng Python ElementTree. Chúng ta sẽ hiểu tệp XML là gì và định dạng dữ liệu của nó, tại sao nó được sử dụng và cách khám phá cấu trúc cây của nó

XML là gì?

XML là viết tắt của “Ngôn ngữ đánh dấu mở rộng”. Nó chủ yếu được sử dụng trong các trang web, nơi dữ liệu có cấu trúc cụ thể và được hiểu một cách linh hoạt bởi khung XML

XML tạo ra một cấu trúc dạng cây dễ diễn giải và hỗ trợ hệ thống phân cấp. Bất cứ khi nào một trang tuân theo XML, nó có thể được gọi là tài liệu XML

Tài liệu XML có các phần khác nhau được gọi là phần tử. Phần tử bao gồm thẻ bắt đầu và thẻ kết thúc và có thể có nhiều phần tử hơn trong đó. Các phần tử bên trong này được gọi là các phần tử con. Luôn có một phần tử cấp cao nhất được gọi là gốc của tài liệu

Các phần tử có các thuộc tính có một số tên và giá trị của nó. Để hiểu nó một cách tốt hơn, hãy xem xét tệp xml sau



1
2008
141100



4
2011
59900



68
2011
13600



68
2011
13600


Trong tài liệu này.
is the root tag
Thẻ gốc có thêm các phần tử con vì
have an attribute named as name
element also have further child elements as , , and .

Python ElementTree là gì?

Trong tài liệu trên, chúng ta có thể thấy tài liệu XML là gì và nó lưu trữ dữ liệu như thế nào. Trong các ngôn ngữ lập trình khác nhau, nó được xử lý theo những cách khác nhau. Python có một bản dựng trong thư viện ElementTree, có chức năng đọc và thao tác các tệp XML

Trước hết chúng ta phải nhập ElementTree. Đó là một thực tế phổ biến để sử dụng bí danh ET

import xml.etree.ElementTree as ET
Phân tích cú pháp dữ liệu XML

Trong tài liệu của chúng tôi, chúng tôi có thông tin quốc gia trong nhiều thẻ quốc gia và trong thẻ quốc gia, chúng tôi cũng có một số chi tiết như thứ hạng, năm, hàng xóm và GDP/Ps. Trước hết, chúng ta phải đọc tệp xml của mình bằng ElementTree hay còn gọi là ET. Và sau đó chúng ta sẽ đọc phần tử gốc của nó với hàm getroot()

tree = ET.parse(‘your path to file/countries.xml’)
root = tree.getroot()

Chúng ta có thể kiểm tra tên thẻ gốc là

root.tagoutput: 'countries'root.attrib
{}

Thẻ của phần tử gốc là quốc gia và nó không có bất kỳ thuộc tính nào. Bây giờ hãy tìm những gì có trong thẻ gốc

for child in root:
print(child.tag, child.attrib)
output:country {'name': 'Liechtenstein'}
country {'name': 'Singapore'}
country {'name': 'Panama'}
country {'name': 'Canada'}

Để kiểm tra tất cả các phần tử trong phần tử gốc của chúng tôi, chúng tôi sẽ kiểm tra nó như

[elem.tag for elem in root.iter()]output:['countries',
'country',
'rank',
'year',
'gdppc',
'neighbor',
'country',
'rank',
'year',
'gdppc',
'neighbor',
'country',
'rank',
'year',
'gdppc',
'neighbor',
'country',
'rank',
'year',
'gdppc',
'neighbor']

Để lưu trữ mọi thông tin quốc gia trong danh sách Python, chúng tôi sẽ làm điều đó như

countries_list=[]
for child in root:
countryName,neighborName, rank, gdppc, year=’’,’’,’’,’’,’’
countryName=child.attrib[‘name’]
for eachChild in child.getchildren():
if(eachChild.tag==’neighbor’):
#neighbor do not have text, instead it have attribute
neighborName=eachChild.attrib[‘name’]
if(eachChild.tag==’rank’):
rank=eachChild.text
if(eachChild.tag==’gdppc’):
gdppc=eachChild.text
else:
year=eachChild.text
obj={
'CountryName’:countryName,
’Rank’:rank,
’Neighbor’:neighborName,
’GDPPC’:gdppc,
’Year’:year
}
countries_list.append(obj)

Trong ví dụ mã này, chúng tôi đã trích xuất mọi thông tin quốc gia từ phần tử quốc gia, thẻ con và thuộc tính của quốc gia đó

countries_listoutput[{'CountryName': 'Liechtenstein',
'Rank': '1',
'Neighbor': 'Austria',
'GDPPC': '141100',
'Year': None},
{'CountryName': 'Singapore',
'Rank': '4',
'Neighbor': 'Malaysia',
'GDPPC': '59900',
'Year': None},
{'CountryName': 'Panama',
'Rank': '68',
'Neighbor': 'Costa Rica',
'GDPPC': '13600',
'Year': None},
{'CountryName': 'Canada',
'Rank': '68',
'Neighbor': 'United States',
'GDPPC': '13600',
'Year': None}]

Đây là đầu ra cuối cùng của chúng tôi trong danh sách Python mà chúng tôi đã trích xuất từ ​​​​tài liệu xml

ElementTree là một thư viện Python quan trọng để xử lý và thao tác các tệp XML trong Python. ElementTree chia nhỏ tài liệu XML theo cấu trúc cây dễ làm việc theo lập trình

Bạn có thể sử dụng XML với Python không?

Python cho phép bạn phân tích cú pháp và sửa đổi tài liệu XML . Để phân tích cú pháp tài liệu XML, bạn cần có toàn bộ tài liệu XML trong bộ nhớ.

XML là gì, nó được sử dụng như thế nào trong Python, giải thích việc phân tích cú pháp bằng một ví dụ?

Bài viết này tập trung vào cách một người có thể phân tích cú pháp một tệp XML nhất định và trích xuất một số dữ liệu hữu ích từ tệp đó theo cách có cấu trúc. XML. XML là viết tắt của eXtensible Markup Language . Nó được thiết kế để lưu trữ và vận chuyển dữ liệu. Nó được thiết kế để con người và máy có thể đọc được.

Bạn có thể chuyển đổi XML thành JSON bằng Python không?

Sử dụng Mô-đun xmltodict. Xmltodict là một mô-đun Python phổ biến có thể chuyển đổi cấu trúc XML của bạn thành cấu trúc JSON . Nó giúp làm việc trong XML Dễ dàng để bạn có cảm giác như đang làm việc với JSON. Nó không phải là một mô-đun được xác định trước và do đó bạn cần cài đặt nó bằng lệnh cài đặt pip.

Tên của mô-đun Python tích hợp để xử lý XML là gì?

xml. cây etree. Mô-đun ElementTree triển khai API đơn giản và hiệu quả để phân tích cú pháp và tạo dữ liệu XML