Tôi có một chuỗi chứa dữ liệu XML được trả về từ một yêu cầu http.Python ElementTree: Phân tích cú pháp một chuỗi và nhận cá thể ElementTree
Tôi đang sử dụng ElementTree để phân tích dữ liệu và sau đó tôi muốn tìm kiếm đệ quy cho một phần tử.
Theo this question, tôi chỉ có thể tìm kiếm đệ quy với result.findall()
nếu result
thuộc loại ElementTree
thay vì loại Element
.
Bây giờ xml.etree.ElementTree.fromstring()
, được sử dụng để phân tích chuỗi, trả về một đối tượng Element
, trong khi xml.etree.ElementTree.parse()
, được sử dụng để phân tích một file , trả về một đối tượng ElementTree
.
Câu hỏi của tôi là: Làm cách nào để phân tích chuỗi và nhận được phiên bản ElementTree
? (không có bất kỳ sự điên rồ nào như ghi vào một tệp tạm thời)
Tôi chỉ muốn add - cho những người sử dụng lxml - trong lxml (trong đó một phần tử luôn thuộc về một tài liệu/cây, ngay cả khi ẩn), bạn có thể sử dụng phương thức getrootttree(). – Steven
Cảm ơn! Thiết kế API thực sự khó chịu trong etree, để có các loại đầu ra khác nhau chỉ phụ thuộc vào nguồn vào. Thực sự khó hiểu: ( –
Điều này thực sự không rõ ràng trong tài liệu. "Fromstring() phân tích cú pháp XML từ một chuỗi trực tiếp thành một phần tử, là phần tử gốc của cây được phân tích cú pháp. Các hàm phân tích cú pháp khác có thể tạo một ElementTree." – Snorfalorpagus