XML, hoặc Ngôn ngữ đánh dấu mở rộng, là ngôn ngữ đánh dấu thường được sử dụng để cấu trúc, lưu trữ và truyền dữ liệu giữa các hệ thống. Mặc dù không phổ biến như trước đây nhưng nó vẫn được sử dụng trong các dịch vụ như RSS và SOAP, cũng như để cấu trúc các tệp như tài liệu Microsoft Office Show
Với việc Python là ngôn ngữ phổ biến cho web và phân tích dữ liệu, có khả năng bạn sẽ cần đọc hoặc ghi dữ liệu XML vào một lúc nào đó, trong trường hợp đó thì bạn thật may mắn. Trong suốt bài viết này, chúng ta sẽ chủ yếu xem xét mô-đun ElementTree để đọc, viết và sửa đổi dữ liệu XML. Chúng tôi cũng sẽ so sánh nó với mô-đun minidom cũ hơn trong một vài phần đầu tiên để bạn có thể so sánh tốt giữa hai mô-đun này. Các mô-đun XML 3, hay Triển khai DOM tối thiểu, là một triển khai đơn giản của Mô hình đối tượng tài liệu (DOM). DOM là một giao diện lập trình ứng dụng xử lý XML như một cấu trúc cây, trong đó mỗi nút trong cây là một đối tượng. Do đó, việc sử dụng mô-đun này yêu cầu chúng ta phải làm quen với chức năng của nóMô-đun 4 cung cấp giao diện "Pythonic" hơn để xử lý XMl và là một tùy chọn tốt cho những người không quen thuộc với DOM. Nó cũng có khả năng là một ứng cử viên tốt hơn để được sử dụng bởi nhiều lập trình viên mới làm quen hơn do giao diện đơn giản của nó, mà bạn sẽ thấy trong suốt bài viết nàyTrong bài viết này, mô-đun 4 sẽ được sử dụng trong tất cả các ví dụ, trong khi mô-đun 3 cũng sẽ được minh họa, nhưng chỉ để đếm và đọc các tài liệu XMLVí dụ về tệp XMLTrong các ví dụ dưới đây, chúng tôi sẽ sử dụng tệp XML sau, tệp này sẽ được lưu dưới dạng "items. xml"
Như bạn có thể thấy, đó là một ví dụ XML khá đơn giản, chỉ chứa một vài đối tượng lồng nhau và một thuộc tính. Tuy nhiên, nó đủ để chứng minh tất cả các thao tác XML trong bài viết này Đọc tài liệu XMLSử dụng minidomĐể phân tích một tài liệu XML bằng cách sử dụng 3, trước tiên chúng ta phải nhập nó từ mô-đun 8. Mô-đun này sử dụng hàm 9 để tạo đối tượng DOM từ tệp XML của chúng tôi. Hàm 9 có cú pháp như sau
Ở đây tên tệp có thể là một chuỗi chứa đường dẫn tệp hoặc một đối tượng kiểu tệp. Hàm trả về một tài liệu, có thể được xử lý dưới dạng một loại XML. Vì vậy, chúng ta có thể sử dụng chức năng 1 để tìm một thẻ cụ thểVì mỗi nút có thể được coi là một đối tượng, nên chúng ta 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. Trong 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ụ thể và của tất cả các nút cùng nhau Kết quả là như sau Hình 1 Nếu chúng tôi muốn sử dụng một tệp đã mở, chỉ cần chuyển đối tượng tệp của chúng tôi tới 9 như vậyNgoài ra, nếu dữ liệu XML đã được tải dưới dạng chuỗi thì chúng ta có thể sử dụng hàm 3 để thay thếSử dụng ElementTree 4 trình bày cho chúng ta một cách rất đơn giản để xử lý các tệp XML. Như mọi khi, để sử dụng nó, trước tiên chúng ta phải nhập mô-đun. Trong mã của chúng tôi, chúng tôi sử dụng lệnh 5 với từ khóa 6, cho phép chúng tôi sử dụng một tên đơn giản (trong trường hợp này là 7) cho mô-đun trong mãSau khi nhập, chúng tôi tạo cấu trúc cây với hàm 9 và chúng tôi lấy phần tử gốc của nó. Khi chúng ta có quyền truy cập vào nút gốc, chúng ta có thể dễ dàng duyệt qua cây, bởi vì cây là một đồ thị được kết nốiSử dụng 4 và giống như ví dụ mã trước đó, chúng tôi có được các thuộc tính nút và văn bản bằng cách sử dụng các đối tượng liên quan đến từng nútMã này như sau Kết quả sẽ như sau Hình 2 Như bạn có thể thấy, điều này rất giống với ví dụ về 3. Một trong những điểm khác biệt chính là đối tượng 1 chỉ đơn giản là một đối tượng từ điển, điều này làm cho nó tương thích hơn một chút với mã Python khác. Chúng tôi cũng không cần sử dụng 2 để truy cập giá trị thuộc tính của mặt hàng như chúng tôi đã làm trước đâyBạn có thể nhận thấy cách truy cập các đối tượng và thuộc tính bằng 4 giống Pythonic hơn một chút, như chúng tôi đã đề cập trước đây. Điều này là do dữ liệu XML được phân tích cú pháp dưới dạng danh sách và từ điển đơn giản, không giống như với 3 trong đó các mục được phân tích cú pháp dưới dạng tùy chỉnh 5 và "Nút văn bản DOM"Đếm các phần tử của tài liệu XMLSử dụng minidomNhư trong trường hợp trước, 3 phải được nhập từ mô-đun 7. Mô-đun này cung cấp chức năng 8 mà chúng tôi sẽ sử dụng để tìm mục thẻ. Sau khi có được, chúng tôi sử dụng phương pháp tích hợp sẵn 9 để lấy số mục con được kết nối với một nút. Kết quả thu được từ mã bên dưới được hiển thị trong Hình 3
Hình 3 Hãy nhớ rằng điều này sẽ chỉ đếm số mục con bên dưới ghi chú mà bạn thực hiện 9 trên đó, trong trường hợp này là nút gốc. Nếu bạn muốn tìm tất cả các phần tử con trong một cây lớn hơn nhiều, bạn cần duyệt qua tất cả các phần tử và đếm từng phần tử con của chúngSử dụng ElementTreeTương tự, mô-đun 4 cho phép chúng tôi tính toán số lượng nút được kết nối với một nútmã ví dụ Kết quả là như sau
hinh 4 Viết tài liệu XMLSử dụng ElementTree 4 cũng tuyệt vời để ghi dữ liệu vào các tệp XML. Đoạn mã dưới đây cho biết cách tạo một tệp XML có cùng cấu trúc với tệp mà chúng tôi đã sử dụng trong các ví dụ trướccác bước là
4Ở đây 5 là nút cha để kết nối với, 1 là một từ điển chứa các thuộc tính phần tử và 7 là các đối số từ khóa bổ sung. Hàm này trả về một phần tử cho chúng ta, phần tử này có thể được sử dụng để đính kèm các phần tử con khác, như chúng ta làm trong các dòng sau bằng cách chuyển các phần tử tới hàm tạo 33. Mặc dù chúng ta có thể thêm các thuộc tính của mình bằng hàm 3, nhưng chúng ta cũng có thể sử dụng hàm 0, như cách chúng ta thực hiện trong đoạn mã sau. Phần tử văn bản được tạo với thuộc tính 1 của đối tượng 24. Trong 3 dòng mã cuối cùng bên dưới, chúng tôi tạo một chuỗi từ cây XML và ghi dữ liệu đó vào một tệp mà chúng tôi mở mã ví dụ Thực thi mã này sẽ dẫn đến một tệp mới, "items2. xml", tương đương với "item" ban đầu. xml", ít nhất là về cấu trúc dữ liệu XML. Tuy nhiên, bạn có thể sẽ nhận thấy rằng chuỗi kết quả chỉ có một dòng và không có dấu thụt đầu dòng Tìm phần tử XMLSử dụng ElementTreeMô-đun 4 cung cấp chức năng 4, giúp chúng tôi tìm các mục cụ thể trong cây. Nó trả về tất cả các mục với điều kiện được chỉ định. Ngoài ra, mô-đun có chức năng 5, chỉ trả về phần tử con đầu tiên phù hợp với tiêu chí đã chỉ định. Cú pháp của cả hai hàm này như sauHãy xem hướng dẫn thực hành, thực tế của chúng tôi để học Git, với các phương pháp hay nhất, tiêu chuẩn được ngành chấp nhận và bao gồm bảng gian lận. Dừng các lệnh Git trên Google và thực sự tìm hiểu nó
Đối với cả hai hàm này, tham số 6 có thể là tên thẻ XML hoặc đường dẫn. Hàm 4 trả về một danh sách các phần tử và 8 trả về một đối tượng duy nhất thuộc loại 2Ngoài ra, có một hàm trợ giúp khác trả về văn bản của nút đầu tiên khớp với tiêu chí đã cho
Dưới đây là một số mã ví dụ để cho bạn thấy chính xác cách các chức năng này hoạt động Và đây là kết quả của việc chạy mã này
Hình 5 Sửa đổi các phần tử XMLSử dụng ElementTreeMô-đun 4 trình bày một số công cụ để sửa đổi các tài liệu XML hiện có. Ví dụ dưới đây cho thấy cách thay đổi tên của nút, thay đổi tên của thuộc tính và sửa đổi giá trị của nó cũng như cách thêm thuộc tính phụ vào phần tửVăn bản nút có thể được thay đổi bằng cách chỉ định giá trị mới trong trường văn bản của đối tượng nút. Tên của thuộc tính có thể được xác định lại bằng cách sử dụng hàm 1. Hàm 2 không chỉ hoạt động trên thuộc tính hiện có mà còn có thể được sử dụng để xác định thuộc tính mớiĐoạn mã dưới đây cho thấy cách thực hiện các thao tác này Sau khi chạy mã, tệp XML kết quả "newitems. xml" sẽ có một cây XML với dữ liệu sau
Như chúng ta có thể thấy khi so sánh với tệp XML gốc, tên của các thành phần mục đã thay đổi thành "newitem", văn bản thành "văn bản mới" và thuộc tính "name2" đã được thêm vào cả hai nút Bạn cũng có thể nhận thấy rằng việc ghi dữ liệu XML theo cách này (gọi 3 bằng tên tệp) sẽ bổ sung thêm một số định dạng cho cây XML để nó chứa các dòng mới và thụt đầu dòngTạo các phần tử con XMLSử dụng ElementTreeMô-đun 4 có nhiều cách để thêm phần tử mới. Cách đầu tiên chúng ta sẽ xem xét là sử dụng hàm 5, hàm này có tên nút và từ điển với các thuộc tính của nó làm tham sốCách thứ hai là thông qua lớp 6, lấy phần tử cha và từ điển các thuộc tính làm đầu vàoTrong ví dụ của chúng tôi dưới đây, chúng tôi hiển thị cả hai phương pháp. Trong trường hợp đầu tiên, nút không có thuộc tính, vì vậy chúng tôi đã tạo một từ điển trống ( 7). Trong trường hợp thứ hai, chúng tôi sử dụng một từ điển phổ biến để tạo các thuộc tínhSau khi chạy mã này, tệp XML kết quả sẽ trông như thế này
Như chúng ta có thể thấy khi so sánh với tệp gốc, phần tử "seconditems" và phần tử phụ "seconditem" của nó đã được thêm vào. Ngoài ra, nút "seconditem" có thuộc tính "name2" và văn bản của nó là "seconditemabc", như mong đợi Xóa các phần tử XMLSử dụng ElementTreeNhư bạn có thể mong đợi, mô-đun 4 có chức năng cần thiết để xóa các thuộc tính và phần tử con của nútXóa một thuộc tính Mã dưới đây cho biết cách xóa thuộc tính của nút bằng cách sử dụng hàm 9. Hàm áp dụng cho tham số đối tượng 1. Nó chỉ định tên của thuộc tính và đặt nó thành 1Kết quả sẽ là tệp XML sau
Như chúng ta có thể thấy trong đoạn mã XML ở trên, mục đầu tiên không có thuộc tính "tên" Xóa một phần tử phụ Có thể xóa một phần tử phụ cụ thể bằng cách sử dụng hàm 2. Chức năng này phải chỉ định nút mà chúng tôi muốn xóaVí dụ sau đây cho chúng ta thấy cách sử dụng nó Kết quả sẽ là tệp XML sau 1Như chúng ta có thể thấy từ mã XML ở trên, hiện tại chỉ có một nút "mục". Cái thứ hai đã bị loại bỏ khỏi cây ban đầu Xóa tất cả các phần tử phụ Mô-đun 4 trình bày cho chúng ta hàm 4, có thể được sử dụng để loại bỏ tất cả các phần tử con của một phần tử đã choVí dụ dưới đây cho chúng ta thấy cách sử dụng 4Kết quả sẽ là tệp XML sau 2Như chúng ta có thể thấy trong đoạn mã XML ở trên, tất cả các phần tử con của phần tử "items" đã bị xóa khỏi cây kết thúcPython cung cấp một số tùy chọn để xử lý các tệp XML. Trong bài viết này, chúng tôi đã xem xét mô-đun 4 và sử dụng nó để phân tích cú pháp, tạo, sửa đổi và xóa các tệp XML. Chúng tôi cũng đã sử dụng mô hình 3 để phân tích các tệp XML. Cá nhân tôi khuyên bạn nên sử dụng mô-đun 4 vì nó dễ làm việc hơn nhiều và là mô-đun hiện đại hơn trong số hai mô-đun
Làm cách nào để tạo Tệp XML bằng Python?Tạo tài liệu XML bằng Python
. import minidom for using xml. dom. Sau đó, chúng tôi tạo phần tử gốc và nối nó vào XML. Sau đó, tạo một sản phẩm con của cha mẹ là Geek for Geeks.
Làm cách nào để tự động hóa Tệp XML bằng Python?Tạo tệp XML tự động bằng Python . Giải pháp Tập tin cấu hình. Đây là file excel gồm 2 tab. Nội dung của tệp cũng có thể được đặt trong một bảng và dữ liệu được lấy từ đó, nhưng với mục đích nghiên cứu của tôi, tôi đã giữ nội dung trong excel Mật mã Tập tin cuối cùng Để kết luận Gói Python nào tạo XML?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
Làm cách nào để tạo Tệp XML từ Excel trong Python?Các nhà phát triển Python có thể dễ dàng tải và chuyển đổi các tệp XLSX sang XML chỉ bằng một vài dòng mã. . Tải tệp XLSX với phiên bản Sổ làm việc Gọi sổ làm việc. phương thức lưu Truyền đường dẫn đầu ra với phần mở rộng XML làm tham số Kiểm tra đường dẫn được chỉ định cho tệp XML kết quả |