Hướng dẫn reading xml file in python - đọc tệp xml trong python

Trong bài viết này, chúng tôi sẽ tìm hiểu nhiều cách khác nhau để đọc các tệp XML trong Python. Chúng tôi sẽ sử dụng một số mô-đun và thư viện tích hợp có sẵn trong Python và một số ví dụ tùy chỉnh liên quan. Trước tiên chúng ta hãy có một cái nhìn nhanh về hình thức XML đầy đủ, giới thiệu về XML, và sau đó đọc về các mô -đun phân tích phân tích khác nhau để đọc các tài liệu XML trong Python.

Giới thiệu về XML

XML là viết tắt của Extensible Markup Language. Nó cần thiết để theo dõi lượng kiến ​​thức nhỏ đến trung bình. Nó cho phép các lập trình viên phát triển các ứng dụng của riêng họ để đọc dữ liệu từ các ứng dụng khác. Phương pháp đọc thông tin từ tệp XML và phân tích thêm cấu trúc logic của nó được gọi là phân tích cú pháp. Do đó, đọc một tệp XML là giống như phân tích tài liệu XML.

Trong bài viết này, chúng tôi sẽ xem xét bốn cách khác nhau để đọc các tài liệu XML bằng các mô -đun XML khác nhau. Họ đang:

1. Minidom (Mô hình đối tượng tài liệu tối thiểu)

2. Đẹp cùng với trình phân tích cú pháp LXML

3. Cây phần tử

4. API đơn giản cho XML (Sax)

Tệp XML: Chúng tôi đang sử dụng tệp XML này để đọc trong các ví dụ của chúng tôi.We are using this XML file to read in our examples.


    
        model1abc
        model2abc
    

Đọc tệp XML bằng Minidom

Đó là mô -đun Python, được sử dụng để đọc tệp XML. Nó cung cấp chức năng

xml.dom.minidom.parse(filename_or_file[, parser[, bufsize]])
0 để đọc tệp
xml.dom.minidom.parse(filename_or_file[, parser[, bufsize]])
1. Chúng ta phải nhập Minidom trước khi sử dụng chức năng của nó trong ứng dụng. Cú pháp của hàm này được đưa ra dưới đây.

Cú pháp

xml.dom.minidom.parse(filename_or_file[, parser[, bufsize]])

Hàm này trả về một tài liệu thuộc loại XML.

Tệp XML của Bài kiểm tra trong PythonRead XML File in Python

Vì mỗi nút sẽ được coi là một đối tượng, chúng tôi có thể truy cập các thuộc tính và văn bản của một phần tử bằng cách sử dụng các thuộc tính của đối tượng. Nhìn vào ví dụ dưới đây, chúng tôi đã truy cập các thuộc tính và văn bản của một nút được chọn.

from xml.dom import minidom

# parse an xml file by name
file = minidom.parse('models.xml')

#use getElementsByTagName() to get tag
models = file.getElementsByTagName('model')

# one specific item attribute
print('model #2 attribute:')
print(models[1].attributes['name'].value)

# all item attributes
print('\nAll attributes:')
for elem in models:
  print(elem.attributes['name'].value)

# one specific item's data
print('\nmodel #2 data:')
print(models[1].firstChild.data)
print(models[1].childNodes[0].data)

# all items data
print('\nAll model data:')
for elem in models:
  print(elem.firstChild.data)


Mô hình #2 Thuộc tính: Model2 Tất cả các thuộc tính: Mô hình1 Mô hình2 Dữ liệu #2
model2
All attributes:
model1
model2
model #2 data:
model2abc
model2abc
All model data:
model1abc
model2abc

Đọc tệp XML bằng cách sử dụng đẹp mắt cùng với trình phân tích cú pháp LXML

Trong ví dụ này, chúng tôi sẽ sử dụng thư viện Python có tên ____12. Súp đẹp hỗ trợ trình phân tích cú pháp HTML (LXML) được bao gồm trong thư viện tiêu chuẩn Python. Sử dụng lệnh sau để cài đặt súp đẹp và trình phân tích cú pháp LMXL trong trường hợp, không được cài đặt.

#for beautifulsoup
pip install beautifulsoup4

#for lmxl parser
pip install lxml

Sau khi cài đặt thành công, hãy sử dụng các thư viện này trong mã Python.

Chúng tôi đang sử dụng tệp XML này để đọc với mã Python.XML file to read with Python code.


  Acer is a laptop
  Add model number here
  Onida is an oven
  Exclusive
  Add price here
  Add content here
     Add company name here
     Add number of employees here
  

Tệp XML của Bài kiểm tra trong PythonRead XML File in Python

Vì mỗi nút sẽ được coi là một đối tượng, chúng tôi có thể truy cập các thuộc tính và văn bản của một phần tử bằng cách sử dụng các thuộc tính của đối tượng. Nhìn vào ví dụ dưới đây, chúng tôi đã truy cập các thuộc tính và văn bản của một nút được chọn.

from bs4 import BeautifulSoup 

# Reading the data inside the xml file to a variable under the name  data
with open('models.xml', 'r') as f:
    data = f.read() 

# Passing the stored data inside the beautifulsoup parser 
bs_data = BeautifulSoup(data, 'xml') 

# Finding all instances of tag   
b_unique = bs_data.find_all('unique') 
print(b_unique) 

# Using find() to extract attributes of the first instance of the tag 
b_name = bs_data.find('child', {'name':'Acer'}) 
print(b_name) 

# Extracting the data stored in a specific attribute of the `child` tag 
value = b_name.get('qty') 
print(value)


Mô hình #2 Thuộc tính: Model2 Tất cả các thuộc tính: Mô hình1 Mô hình2 Dữ liệu #2
Acer is a laptop
12

Đọc tệp XML bằng cách sử dụng đẹp mắt cùng với trình phân tích cú pháp LXML

Trong ví dụ này, chúng tôi sẽ sử dụng thư viện Python có tên ____12. Súp đẹp hỗ trợ trình phân tích cú pháp HTML (LXML) được bao gồm trong thư viện tiêu chuẩn Python. Sử dụng lệnh sau để cài đặt súp đẹp và trình phân tích cú pháp LMXL trong trường hợp, không được cài đặt.

Tệp XML của Bài kiểm tra trong PythonRead XML File in Python

Vì mỗi nút sẽ được coi là một đối tượng, chúng tôi có thể truy cập các thuộc tính và văn bản của một phần tử bằng cách sử dụng các thuộc tính của đối tượng. Nhìn vào ví dụ dưới đây, chúng tôi đã truy cập các thuộc tính và văn bản của một nút được chọn.

# importing element tree
import xml.etree.ElementTree as ET 

# Pass the path of the xml document 
tree = ET.parse('models.xml') 

# get the parent tag 
root = tree.getroot() 

# print the root (parent) tag along with its memory location 
print(root) 

# print the attributes of the first tag  
print(root[0].attrib) 

# print the text contained within first subtag of the 5th tag from the parent 
print(root[5][0].text) 


Mô hình #2 Thuộc tính: Model2 Tất cả các thuộc tính: Mô hình1 Mô hình2 Dữ liệu #2
{'name': 'Acer', 'qty': '12'}
Add company name here

Đọc tệp XML bằng cách sử dụng đẹp mắt cùng với trình phân tích cú pháp LXML

Trong ví dụ này, chúng tôi sẽ sử dụng thư viện Python có tên ____12. Súp đẹp hỗ trợ trình phân tích cú pháp HTML (LXML) được bao gồm trong thư viện tiêu chuẩn Python. Sử dụng lệnh sau để cài đặt súp đẹp và trình phân tích cú pháp LMXL trong trường hợp, không được cài đặt.

Sau khi cài đặt thành công, hãy sử dụng các thư viện này trong mã Python.

  • Chúng tôi đang sử dụng tệp XML này để đọc với mã Python.- handles the tags and attributes of XML. The ContentHandler is called at the beginning and at the end of every element.
  • Chúng ta hãy đọc tệp trên bằng thư viện đẹp trong tập lệnh Python.and endDocument - called at the start and the end of the XML file.
  • [Thêm số mô hình vào đây, thêm giá vào đây] Acer là máy tính xách tay 12startElement(tag, attributes) and endElement(tag) are called; otherwise, the corresponding methods startElementNS and endElementNS

Đọc tệp XML bằng cây phần tử



   35000
   12
   Samsung


   46500
   14
   Onida

   
   30000
   8
   Lenovo


   45000
   12
   Acer

Mô -đun xml.dom.minidom.parse(filename_or_file[, parser[, bufsize]])3 cung cấp cho chúng tôi nhiều công cụ để thao tác các tệp XML. Không cần cài đặt. Do định dạng XML có ở định dạng dữ liệu phân cấp, việc thể hiện nó trở nên dễ dàng hơn. Cây phần tử đại diện cho toàn bộ tài liệu XML dưới dạng một cây.

import xml.sax

class XMLHandler(xml.sax.ContentHandler):
    def __init__(self):
        self.CurrentData = ""
        self.price = ""
        self.qty = ""
        self.company = ""

   # Call when an element starts
    def startElement(self, tag, attributes):
        self.CurrentData = tag
        if(tag == "model"):
            print("*****Model*****")
            title = attributes["number"]
            print("Model number:", title)

   # Call when an elements ends
    def endElement(self, tag):
        if(self.CurrentData == "price"):
            print("Price:", self.price)
        elif(self.CurrentData == "qty"):
            print("Quantity:", self.qty)
        elif(self.CurrentData == "company"):
            print("Company:", self.company)
        self.CurrentData = ""

   # Call when a character is read
    def characters(self, content):
        if(self.CurrentData == "price"):
            self.price = content
        elif(self.CurrentData == "qty"):
            self.qty = content
        elif(self.CurrentData == "company"):
            self.company = content

# create an XMLReader
parser = xml.sax.make_parser()

# turn off namepsaces
parser.setFeature(xml.sax.handler.feature_namespaces, 0)

# override the default ContextHandler
Handler = XMLHandler()
parser.setContentHandler( Handler )
parser.parse("models.xml")


Để đọc một tệp XML, trước tiên, chúng tôi nhập lớp ElementTree được tìm thấy bên trong thư viện XML. Sau đó, chúng tôi sẽ chuyển tên tệp của tệp XML cho phương thức

xml.dom.minidom.parse(filename_or_file[, parser[, bufsize]])
4, để bắt đầu phân tích cú pháp. Sau đó, chúng tôi sẽ nhận được thẻ chính của tệp XML bằng
xml.dom.minidom.parse(filename_or_file[, parser[, bufsize]])
5. Sau đó, chúng tôi sẽ hiển thị thẻ chính của tệp XML. Bây giờ, để có được các thuộc tính của thẻ phụ của thẻ cha sẽ sử dụng
xml.dom.minidom.parse(filename_or_file[, parser[, bufsize]])
6. Cuối cùng, hiển thị văn bản được đặt trong thẻ phụ thứ 1 của thẻ phụ thứ 5 của gốc thẻ.
Model number: ST001
Price: 35000
Quantity: 12
Company: Samsung
*****Model*****
Model number: RW345
Price: 46500
Quantity: 14
Company: Onida
*****Model*****
Model number: EX366
Price: 30000
Quantity: 8
Company: Lenovo
*****Model*****
Model number: FU699
Price: 45000
Quantity: 12
Company: Acer

Sự kết luận

Trong bài viết này, chúng tôi đã tìm hiểu về các tệp XML và các cách khác nhau để đọc tệp XML bằng cách sử dụng một số mô-đun tích hợp và API như

xml.dom.minidom.parse(filename_or_file[, parser[, bufsize]])
9,
from xml.dom import minidom

# parse an xml file by name
file = minidom.parse('models.xml')

#use getElementsByTagName() to get tag
models = file.getElementsByTagName('model')

# one specific item attribute
print('model #2 attribute:')
print(models[1].attributes['name'].value)

# all item attributes
print('\nAll attributes:')
for elem in models:
  print(elem.attributes['name'].value)

# one specific item's data
print('\nmodel #2 data:')
print(models[1].firstChild.data)
print(models[1].childNodes[0].data)

# all items data
print('\nAll model data:')
for elem in models:
  print(elem.firstChild.data)
0,
from xml.dom import minidom

# parse an xml file by name
file = minidom.parse('models.xml')

#use getElementsByTagName() to get tag
models = file.getElementsByTagName('model')

# one specific item attribute
print('model #2 attribute:')
print(models[1].attributes['name'].value)

# all item attributes
print('\nAll attributes:')
for elem in models:
  print(elem.attributes['name'].value)

# one specific item's data
print('\nmodel #2 data:')
print(models[1].firstChild.data)
print(models[1].childNodes[0].data)

# all items data
print('\nAll model data:')
for elem in models:
  print(elem.firstChild.data)
1,
from xml.dom import minidom

# parse an xml file by name
file = minidom.parse('models.xml')

#use getElementsByTagName() to get tag
models = file.getElementsByTagName('model')

# one specific item attribute
print('model #2 attribute:')
print(models[1].attributes['name'].value)

# all item attributes
print('\nAll attributes:')
for elem in models:
  print(elem.attributes['name'].value)

# one specific item's data
print('\nmodel #2 data:')
print(models[1].firstChild.data)
print(models[1].childNodes[0].data)

# all items data
print('\nAll model data:')
for elem in models:
  print(elem.firstChild.data)
2. Chúng tôi cũng đã sử dụng một số mã phân tích cú pháp tùy chỉnh để phân tích tệp XML.

Làm cách nào để đọc các tệp XML?

Các tệp XML có thể được mở trong trình duyệt như IE hoặc Chrome, với bất kỳ trình chỉnh sửa văn bản nào như Notepad hoặc MS-word. Ngay cả Excel cũng có thể được sử dụng để mở các tệp XML.. Even Excel can be used to open XML files.

XML hoạt động như thế nào trong Python?

Một lộ trình cho các trình phân tích cú pháp XML trong Python..
Chọn mô hình phân tích cú pháp XML bên phải.Mô hình đối tượng tài liệu (DOM) ....
Tìm hiểu về trình phân tích cú pháp XML trong thư viện tiêu chuẩn của Python.xml.dom.minidom: Thực hiện DOM tối thiểu.....
Khám phá thư viện trình phân tích cú pháp XML của bên thứ ba.....
Liên kết dữ liệu XML với các đối tượng Python.....
Xử lý bom XML với các trình phân tích cú pháp an toàn ..
Conclusion..

Làm thế nào bao gồm tệp XML trong Python?

Tạo tài liệu XML bằng Python trước, chúng tôi nhập Minidom để sử dụng XML.Dom.Sau đó, chúng tôi tạo phần tử gốc và nối nó vào XML.Sau đó, tạo ra một sản phẩm con của cha mẹ là chuyên viên máy tính cho các chuyên viên máy tính.import minidom for using xml. dom . Then we create the root element and append it to the XML. After that creating a child product of parent namely Geeks for Geeks.

Làm cách nào để tải xuống một tệp XML trong Python?

Khi tôi mở/tạo nguồn cấp dữ liệu.Tệp XML, tôi đang sử dụng chế độ trực tuyến WB ...
Kéo nội dung XML xuống bằng các yêu cầu.lấy ..
Sử dụng một câu lệnh để tạo một tệp có tên là Feed.XML.(Nếu tệp tồn tại, nó sẽ bị ghi đè) ..
Viết nội dung của phản hồi yêu cầu vào nguồn cấp dữ liệu.XML ..