16
Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.
Tôi đang phân tích XML trong Python bởi ElementTree
import xml.etree.ElementTree as ET
tree = ET.parse['try.xml']
root = tree.getroot[]
Tôi muốn phân tích tất cả các tệp 'XML' trong một thư mục nhất định. Người dùng chỉ nên nhập tên thư mục và tôi có thể lặp qua tất cả các tệp trong thư mục và phân tích từng cái một. Ai đó có thể cho tôi biết cách tiếp cận. Tôi đang sử dụng Linux.
hỏi ngày 28 tháng 3 năm 2013 lúc 10:30Mar 28, 2013 at 10:30
4
Chỉ cần tạo một vòng lặp trên
import xml.etree.ElementTree as ET
import os
path = '/path/to/directory'
for filename in os.listdir[path]:
if not filename.endswith['.xml']: continue
fullname = os.path.join[path, filename]
tree = ET.parse[fullname]
1:import xml.etree.ElementTree as ET
import os
path = '/path/to/directory'
for filename in os.listdir[path]:
if not filename.endswith['.xml']: continue
fullname = os.path.join[path, filename]
tree = ET.parse[fullname]
Freedev
22.8K7 Huy hiệu vàng104 Huy hiệu bạc117 Huy hiệu đồng7 gold badges104 silver badges117 bronze badges
Đã trả lời ngày 28 tháng 3 năm 2013 lúc 10:32Mar 28, 2013 at 10:32
Martijn Pieters ♦ Martijn Pieters♦Martijn Pieters
990K276 Huy hiệu vàng3896 Huy hiệu bạc3249 Huy hiệu đồng276 gold badges3896 silver badges3249 bronze badges
2
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
import xml.etree.ElementTree as ET
import os
path = '/path/to/directory'
for filename in os.listdir[path]:
if not filename.endswith['.xml']: continue
fullname = os.path.join[path, filename]
tree = ET.parse[fullname]
2. 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
import xml.etree.ElementTree as ET
import os
path = '/path/to/directory'
for filename in os.listdir[path]:
if not filename.endswith['.xml']: continue
fullname = os.path.join[path, filename]
tree = ET.parse[fullname]
3 để đọc tệp import xml.etree.ElementTree as ET
import os
path = '/path/to/directory'
for filename in os.listdir[path]:
if not filename.endswith['.xml']: continue
fullname = os.path.join[path, filename]
tree = ET.parse[fullname]
4. 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 ____. 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 ____. 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 ____. 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 import xml.etree.ElementTree as ET
import os
path = '/path/to/directory'
for filename in os.listdir[path]:
if not filename.endswith['.xml']: continue
fullname = os.path.join[path, filename]
tree = ET.parse[fullname]
6 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.etree.ElementTree as ET
import os
path = '/path/to/directory'
for filename in os.listdir[path]:
if not filename.endswith['.xml']: continue
fullname = os.path.join[path, filename]
tree = ET.parse[fullname]
import xml.etree.ElementTree as ET
import os
path = '/path/to/directory'
for filename in os.listdir[path]:
if not filename.endswith['.xml']: continue
fullname = os.path.join[path, filename]
tree = ET.parse[fullname]
0
Để đọ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
import xml.etree.ElementTree as ET
import os
path = '/path/to/directory'
for filename in os.listdir[path]:
if not filename.endswith['.xml']: continue
fullname = os.path.join[path, filename]
tree = ET.parse[fullname]
7, để 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 import xml.etree.ElementTree as ET
import os
path = '/path/to/directory'
for filename in os.listdir[path]:
if not filename.endswith['.xml']: continue
fullname = os.path.join[path, filename]
tree = ET.parse[fullname]
8. Sau đó, chúng tôi sẽ hiển thị thẻ chính của tệp XML. Bây giờ, để nhận các thuộc tính của thẻ phụ của thẻ cha sẽ sử dụng import xml.etree.ElementTree as ET
import os
path = '/path/to/directory'
for filename in os.listdir[path]:
if not filename.endswith['.xml']: continue
fullname = os.path.join[path, filename]
tree = ET.parse[fullname]
9. 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ư
model1abc
model2abc
2,
model1abc
model2abc
3,
model1abc
model2abc
4,
model1abc
model2abc
5. 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.