एक स्ट्रिंग स्रोत से पायथन xml ElementTree?


117

ElementTree.parse एक फ़ाइल से पढ़ता है, अगर मेरे पास पहले से ही एक स्ट्रिंग में XML डेटा है तो मैं इसका उपयोग कैसे कर सकता हूं?

हो सकता है कि मैं यहां कुछ याद कर रहा हूं, लेकिन एक फ़ाइल में स्ट्रिंग को लिखने और इसे दोबारा पढ़ने के बिना एलीमेंटट्री का उपयोग करने का एक तरीका होना चाहिए।

xml.etree.elementtree


2
हाय जॉर्ज यह बहुत अच्छा होगा यदि आप दूसरे उत्तर (डगसेवे) को सही मान सकते हैं।
अकालगर

जवाबों:


89

यदि आप xml.etree.ElementTree.parseफ़ाइल से पार्स करने के लिए उपयोग कर रहे हैं , तो आप उपयोग कर सकते हैंxml.etree.ElementTree.fromstring पाठ से पार्स करने के लिए ।

Xml.etree.ElementTree देखें


38
समस्या यह है कि ElementTree.fromstring एक तत्व उत्पन्न करता है, और एक ElementTree नहीं! किसी को पता है कि यह कैसे काम करना है?
शमूएल लांपा

4
@SamuelLampa के समान समस्या का उल्लेख किया गया है। मैं एलीमेंट्री नहीं हूं, मैं इसके getroot()लिए सक्षम नहीं हूं
सिद्धार्थ मेनन

23
@SamuelLampa ने dgassaway का जवाब देखा , उपयोग करेंET.ElementTree(ET.fromstring(xmlstring))
कॉलिन पिकार्ड

6
सही उत्तर के लिए, @dgassaway
2.718

आयात बयानों को मत
भूलिए

225

आप पाठ को एक स्ट्रिंग के रूप में पार्स कर सकते हैं, जो कि एक तत्व बनाता है, और उस तत्व का उपयोग करके एक तत्वरेखा बनाएँ।

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

मैं अभी इस मुद्दे पर आया था और दस्तावेज़ीकरण, पूरा होने के दौरान, उपयोग parse()और fromstring()विधियों के बीच के अंतर पर बहुत सीधा नहीं हूं ।


5
दूसरी लाइन बस हो सकती है root = ET.fromstring(xmlstring)। बराबर ET.parse('file.xml').getroot(): docs.python.org/3.6/library/…
एंटोन

3
@ एटन, ओपी के रूप में, विचार एक ElementTree उत्पन्न करने के लिए है, और एक तत्व नहीं है। यह उपयोगी है, उदाहरण के लिए, जब आप ElementTree.write () का उपयोग करना चाहते हैं।
'12

16

आपको चाहिए xml.etree.ElementTree.fromstring(text)

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

1

io.StringIO XML को xml.etree.ElementTree में प्राप्त करने का एक और विकल्प है :

import io
f = io.StringIO(xmlstring)
tree = ET.parse(f)
root = tree.getroot()

होवेर, यह XML घोषणा को प्रभावित नहीं करता है जो एक में होगा tree(हालांकि यह ElementTree.write () के लिए आवश्यक है )। देखें xml.etree.ElementTree का उपयोग कर XML घोषणा लिखने के लिए कैसे

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.