Ngày nay, tùy chọn phổ biến nhất (và rất đơn giản) là API ElementTree , đã được đưa vào thư viện chuẩn kể từ Python 2.5.
Các tùy chọn có sẵn cho đó là:
- ElementTree (Cơ bản, triển khai Python thuần túy của ElementTree. Một phần của thư viện chuẩn từ 2.5)
- cEuityTree (Tối ưu hóa triển khai C của ElementTree. Cũng được cung cấp trong thư viện chuẩn từ 2.5)
- LXML (Dựa trên libxml2. Cung cấp một siêu bộ đệm API ElementTree phong phú cũng như XPath, Bộ chọn CSS và hơn thế nữa)
Đây là một ví dụ về cách tạo tài liệu mẫu của bạn bằng cách sử dụng cEuityTree trong st-stdlib:
import xml.etree.cElementTree as ET
root = ET.Element("root")
doc = ET.SubElement(root, "doc")
ET.SubElement(doc, "field1", name="blah").text = "some value1"
ET.SubElement(doc, "field2", name="asdfasd").text = "some vlaue2"
tree = ET.ElementTree(root)
tree.write("filename.xml")
Tôi đã thử nó và nó hoạt động, nhưng tôi cho rằng khoảng trắng không đáng kể. Nếu bạn cần thụt "đẹp", hãy cho tôi biết và tôi sẽ tìm cách làm điều đó. (Đây có thể là một tùy chọn dành riêng cho LXML. Tôi không sử dụng triển khai stdlib nhiều)
Để đọc thêm, đây là một số liên kết hữu ích:
Như một lưu ý cuối cùng, cEuityTree hoặc LXML phải đủ nhanh cho tất cả các nhu cầu của bạn (cả hai đều được tối ưu hóa mã C), nhưng trong trường hợp bạn đang trong tình huống cần phải vắt kiệt mọi hiệu suất cuối cùng, các điểm chuẩn trên trang LXML chỉ ra rằng:
- LXML rõ ràng giành chiến thắng để tuần tự hóa (tạo) XML
- Là một tác dụng phụ của việc triển khai truyền tải cha mẹ thích hợp, LXML chậm hơn một chút so với cEuityTree để phân tích cú pháp.