Hướng dẫn how do i read a xml file from a directory in python? - làm cách nào để đọc tệp xml từ một thư mục trong python?

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 PietersMartijn 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]
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.

Làm cách nào để đọc nội dung XML trong Python?

Để đọc một tệp XML bằng ElementTree, 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, dưới tên ET [thông tin chung]. Sau đó chuyển tên tệp của tệp XML cho ElementTree. Phương thức Parse [], để cho phép phân tích tệp XML của chúng tôi. Sau đó, nhận được gốc [thẻ cha] của tệp XML của chúng tôi bằng GetRoot [].

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 có hoạt động với Python không?

Thư viện tiêu chuẩn Python cung cấp một bộ giao diện tối thiểu nhưng hữu ích để hoạt động với XML.Hai API cơ bản và được sử dụng rộng nhất cho dữ liệu XML là các giao diện Sax và DOM.API đơn giản cho XML [SAX] - Tại đây, bạn đăng ký các cuộc gọi lại cho các sự kiện quan tâm và sau đó để trình phân tích cú pháp tiến hành thông qua tài liệu.. The two most basic and broadly used APIs to XML data are the SAX and DOM interfaces. Simple API for XML [SAX] − Here, you register callbacks for events of interest and then let the parser proceed through the document.

Pandas có hoạt động với XML không?

Thư viện phân tích dữ liệu PANDAS cung cấp các chức năng để đọc/ghi dữ liệu cho hầu hết các loại tệp.Ví dụ: nó bao gồm read_csv [] và to_csv [] để tương tác với các tệp CSV.Tuy nhiên, Pandas không bao gồm bất kỳ phương pháp nào để đọc và ghi các tệp XML.Pandas does not include any methods to read and write XML files.

Bài Viết Liên Quan

Chủ Đề