2009-03-15 29 views
63

ElementTree.parse đọc từ một tệp, làm thế nào tôi có thể sử dụng điều này nếu tôi đã có dữ liệu XML trong một chuỗi?Python xml ElementTree từ một nguồn chuỗi?

Có thể tôi đang thiếu thứ gì đó ở đây, nhưng phải có cách để sử dụng ElementTree mà không cần viết chuỗi đó vào một tệp và đọc lại nó.

xml.etree.elementtree

Trả lời

54

Nếu bạn đang sử dụng xml.etree.ElementTree.parse để phân tích cú pháp 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.

Xem xml.etree.ElementTree

+24

Vấn đề là ElementTree.fromstring tạo thành phần tử chứ không phải ElementTree! Có ai biết cách làm việc này không? –

+3

Cùng một vấn đề như @SamuelLampa đã đề cập. Tôi không phải là ElementTree, tôi không thể làm 'getroot()' cho điều này –

+10

@SamuelLampa xem [câu trả lời của dgassaway] (http://stackoverflow.com/a/18281386/12744), sử dụng 'ET.ElementTree (ET .fromstring (xmlstring)) ' –

2

Đó là trên trang mà bạn liên kết. Sử dụng chuỗi.

14

Bạn cần xml.etree.ElementTree.fromstring (văn bản)

from xml.etree.ElementTree import XML, fromstring, tostring 
myxml = fromstring(text) 
119

Bạn có thể phân tích các văn bản như là một chuỗi, mà tạo ra một Element, và tạo ra một ElementTree sử dụng mà Thành phần.

import xml.etree.ElementTree as ET 
tree = ET.ElementTree(ET.fromstring(xmlstring)) 

Tôi chỉ tình cờ gặp vấn đề này và các tài liệu, trong khi hoàn thành, không phải là rất đơn giản về sự khác biệt trong việc sử dụng giữa parse()fromstring() phương pháp.

+24

Đây phải là câu trả lời được chấp nhận. – fiatjaf

+2

Dòng thứ hai có thể đơn giản là 'root = ET.fromstring (xmlstring)'. Tương đương với 'ET.parse ('file.xml'). Getroot()': https://docs.python.org/3.6/library/xml.etree.elementtree.html#parsing-xml –

Các vấn đề liên quan