ElementTree.parse đọc từ một tệp, làm cách nào tôi có thể sử dụng tệp này nếu tôi đã có dữ liệu XML trong một chuỗi?
Có thể tôi đang thiếu một cái gì đó ở đây, nhưng phải có cách sử dụng ElementTree mà không cần viết chuỗi ra tệp và đọc lại.
ElementTree.parse đọc từ một tệp, làm cách nào tôi có thể sử dụng tệp này nếu tôi đã có dữ liệu XML trong một chuỗi?
Có thể tôi đang thiếu một cái gì đó ở đây, nhưng phải có cách sử dụng ElementTree mà không cần viết chuỗi ra tệp và đọc lại.
Câu trả lời:
Nếu bạn đang sử dụng xml.etree.ElementTree.parse
để phân tích cú pháp từ một tệp, thì bạn có thể sử dụng xml.etree.ElementTree.fromstring
để phân tích cú pháp từ văn bản.
getroot()
điều này
ET.ElementTree(ET.fromstring(xmlstring))
Bạn có thể phân tích văn bản dưới dạng một chuỗi, tạo ra một phần tử và tạo một ElementTree bằng cách sử dụng phần tử đó.
import xml.etree.ElementTree as ET
tree = ET.ElementTree(ET.fromstring(xmlstring))
Tôi vừa gặp vấn đề này và tài liệu, trong khi hoàn thành, không đơn giản lắm về sự khác biệt trong cách sử dụng giữa parse()
và fromstring()
phương thức.
root = ET.fromstring(xmlstring)
. Bằng ET.parse('file.xml').getroot()
: docs.python.org/3.6/l Library / từ
io.StringIO là một tùy chọn khác để nhận XML vào xml.etree.EuityTree :
import io
f = io.StringIO(xmlstring)
tree = ET.parse(f)
root = tree.getroot()
Hovever, nó không ảnh hưởng đến khai báo XML mà người ta sẽ cho là ở trong tree
(mặc dù điều đó là cần thiết cho ElementTree.write () ). Xem Cách viết khai báo XML bằng xml.etree.EuityTree .