ElementTree.parse อ่านจากไฟล์ฉันจะใช้สิ่งนี้ได้อย่างไรหากฉันมีข้อมูล XML ในสตริงอยู่แล้ว
บางทีฉันอาจจะพลาดอะไรบางอย่างที่นี่ แต่ต้องมีวิธีใช้ ElementTree โดยไม่ต้องเขียนสตริงลงในไฟล์แล้วอ่านอีกครั้ง
ElementTree.parse อ่านจากไฟล์ฉันจะใช้สิ่งนี้ได้อย่างไรหากฉันมีข้อมูล XML ในสตริงอยู่แล้ว
บางทีฉันอาจจะพลาดอะไรบางอย่างที่นี่ แต่ต้องมีวิธีใช้ ElementTree โดยไม่ต้องเขียนสตริงลงในไฟล์แล้วอ่านอีกครั้ง
คำตอบ:
หากคุณใช้xml.etree.ElementTree.parse
เพื่อแยกวิเคราะห์จากไฟล์คุณสามารถใช้xml.etree.ElementTree.fromstring
เพื่อแยกวิเคราะห์จากข้อความ
getroot()
นี้ได้
ET.ElementTree(ET.fromstring(xmlstring))
คุณสามารถแยกวิเคราะห์ข้อความเป็นสตริงซึ่งสร้างองค์ประกอบและสร้าง ElementTree โดยใช้องค์ประกอบนั้น
import xml.etree.ElementTree as ET
tree = ET.ElementTree(ET.fromstring(xmlstring))
ฉันเพิ่งเจอปัญหานี้และในขณะที่เอกสารฉบับสมบูรณ์ไม่ตรงไปตรงมามากนักเกี่ยวกับความแตกต่างในการใช้งานระหว่างวิธีการparse()
และfromstring()
วิธีการ
root = ET.fromstring(xmlstring)
บรรทัดที่สองอาจจะเป็นเพียงแค่ เท่ากับET.parse('file.xml').getroot()
: docs.python.org/3.6/library/…
คุณต้องการไฟล์ xml.etree.ElementTree.fromstring(text)
from xml.etree.ElementTree import XML, fromstring
myxml = fromstring(text)
io.StringIOเป็นอีกทางเลือกหนึ่งสำหรับการรับ XML ในxml.etree.ElementTree :
import io
f = io.StringIO(xmlstring)
tree = ET.parse(f)
root = tree.getroot()
Hovever จะไม่มีผลต่อการประกาศ XML ซึ่งถือว่าอยู่ในtree
(แม้ว่าจะจำเป็นสำหรับElementTree.write () ) ดูวิธีการเขียนประกาศ XML ใช้ xml.etree.ElementTree