Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Python

पायथन में एलिमेंटट्री एक्सएमएल एपीआई

एक्सटेंसिबल मार्कअप लैंग्वेज (XML) HTML की तरह ही एक मार्कअप लैंग्वेज है। यह एक पोर्टेबल है और यह किसी भी SQL डेटाबेस का उपयोग किए बिना छोटी से मध्यम मात्रा में डेटा को संभालने के लिए उपयोगी है।

पायथन के मानक पुस्तकालय में xml पैकेज है। इस पैकेज में ElementTree मॉड्यूल है। यह एक सरल और हल्का XML प्रोसेसर API है।

एक्सएमएल पदानुक्रमित डेटा प्रारूप की तरह एक पेड़ है। इस मॉड्यूल में 'एलिमेंटट्री' पूरे एक्सएमएल दस्तावेज़ को एक पेड़ के रूप में मानता है। 'तत्व' वर्ग इस पेड़ में एकल नोड का प्रतिनिधित्व करता है। XML फ़ाइलों पर पढ़ने और लिखने का कार्य ElementTree स्तर पर किया जाता है। एकल XML तत्व और उसके उप-तत्वों के साथ सहभागिता तत्व स्तर पर की जाती है।

XML फ़ाइल बनाने के लिए

पेड़ तत्वों की एक पदानुक्रमित संरचना है जो जड़ से शुरू होती है और उसके बाद अन्य तत्व होती है। प्रत्येक तत्व इस मॉड्यूल के Element() फ़ंक्शन का उपयोग करके बनाया गया है।

import xml.etree.ElementTree as et
e=et.Element('name')

प्रत्येक तत्व को एक टैग और एट्रिब विशेषता की विशेषता होती है जो एक तानाशाही वस्तु है। पेड़ के शुरुआती तत्व के लिए, अट्रिब एक खाली शब्दकोश है

>>> root=xml.Element('employees')
>>> root.tag
'emploees'
>>> root.attrib
{}

अब आप मूल तत्व के अंतर्गत जोड़े जाने के लिए एक या अधिक चाइल्ड एलिमेंट सेट कर सकते हैं। प्रत्येक बच्चे में एक या अधिक उप-तत्व हो सकते हैं। Subelement() फ़ंक्शन का उपयोग करके उन्हें जोड़ें और इसकी टेक्स्ट विशेषता को परिभाषित करें।

child=xml.Element("employee")
nm = xml.SubElement(child, "name")
nm.text = student.get('name')
age = xml.SubElement(child, "salary")
age.text = str(student.get('salary'))

प्रत्येक बच्चे को एपेंड () फ़ंक्शन द्वारा

. के रूप में रूट में जोड़ा जाता है
root.append(child)

आवश्यक संख्या में चाइल्ड एलिमेंट जोड़ने के बाद, एलिमेंटट्री () फ़ंक्शन द्वारा एक ट्री ऑब्जेक्ट का निर्माण करें

tree = et.ElementTree(root)

ट्री ऑब्जेक्ट के राइट () फ़ंक्शन द्वारा संपूर्ण ट्री स्ट्रक्चर एक बाइनरी फ़ाइल में लिखा जाता है

f = open('employees.xml', "wb")
tree.write(f)

निम्नलिखित उदाहरण में पेड़ का निर्माण शब्दकोश वस्तुओं की सूची से किया गया है। प्रत्येक शब्दकोश आइटम में छात्र डेटा संरचना का वर्णन करने वाले कुंजी-मूल्य जोड़े होते हैं। इस प्रकार बनाया गया पेड़ 'myfile.xml' पर लिखा जाता है

import xml.etree.ElementTree as et
employees=[{'name':'aaa','age':21,'sal':5000},{'name':xyz,'age':22,'sal':6000}]
root = et.Element("employees")
for employee in employees:
child=xml.Element("employee")
root.append(child)
nm = xml.SubElement(child, "name")
nm.text = student.get('name')
age = xml.SubElement(child, "age")
age.text = str(student.get('age'))
sal=xml.SubElement(child, "sal")
sal.text=str(student.get('sal'))

tree = et.ElementTree(root)
with open('employees.xml', "wb") as fh:
tree.write(fh)

'myfile.xml' वर्तमान कार्यशील निर्देशिका में संग्रहीत है।

<employees><employee><name>aaa</name><age>21</age><sal>5000</sal></employee><employee><name>xyz</name><age>22</age><sal>60</sal></employee></employee>

XML फ़ाइल को पार्स करने के लिए

आइए अब उपरोक्त उदाहरण में बनाए गए 'myfile.xml' को वापस पढ़ें। इस प्रयोजन के लिए ElementTree मॉड्यूल में निम्नलिखित कार्यों का उपयोग किया जाएगा

ElementTree () ट्री ऑब्जेक्ट में तत्वों की पदानुक्रमित संरचना को पढ़ने के लिए यह फ़ंक्शन अतिभारित है।

tree = et.ElementTree(file='students.xml')

गेटरूट () यह फ़ंक्शन पेड़ का मूल तत्व लौटाता है

root = tree.getroot()

गेटचिल्ड्रेन () यह फ़ंक्शन किसी तत्व के एक स्तर नीचे उप-तत्वों की सूची देता है।

children = root.getchildren()

निम्नलिखित उदाहरण में, 'myfile.xml' के तत्वों और उप-तत्वों को शब्दकोश वस्तुओं की सूची में पार्स किया गया है।

import xml.etree.ElementTree as et
tree = et.ElementTree(file='employees.xml')
root = tree.getroot()
students = []
children = root.getchildren()
for child in children:
employee={}
pairs = child.getchildren()
for pair in pairs:
employee[pair.tag]=pair.text
employees.append(student)
print (employees)

आउटपुट

[{'name': 'aaa', 'age': '21', 'sal': '5000'}, {'name': 'xyz', 'age': '22', 'sal': '6000'}]

XML फ़ाइल को संशोधित करने के लिए

हम एलीमेंट के iter() फंक्शन का उपयोग करेंगे। यह दिए गए टैग के लिए वर्तमान तत्व के साथ रूट के रूप में एक पेड़ इटरेटर बनाता है। इटरेटर इस तत्व और इसके नीचे के सभी तत्वों पर दस्तावेज़ (गहराई पहले) क्रम में पुनरावृति करता है।

आइए हम सभी 'चिह्न' उप-तत्वों के लिए पुनरावर्तक बनाएं और प्रत्येक सैल टैग के टेक्स्ट को 100 तक बढ़ाएं।

import xml.etree.ElementTree as et
tree = et.ElementTree(file='students.xml')
root = tree.getroot()
for x in root.iter('sal'):
s = int (x.text)
s = s+100
x.text=str(s)
with open("employees.xml", "wb") as fh:
tree.write(fh)
के रूप में

हमारे 'कर्मचारी.एक्सएमएल' को अब तदनुसार संशोधित किया जाएगा।

हम एक निश्चित कुंजी के मूल्य को अपडेट करने के लिए सेट () का भी उपयोग कर सकते हैं।

x.set(marks, str(mark))

  1. पायथन में सममित वृक्ष

    मान लीजिए हमारे पास एक बाइनरी ट्री है। हमें यह जांचना है कि वृक्ष सममित वृक्ष है या नहीं। एक पेड़ को सममित कहा जाएगा यदि वह वैसा ही है जब हम उसका दर्पण प्रतिबिम्ब लेते हैं। इन दो पेड़ों से, पहला सममित है, लेकिन दूसरा नहीं है। इसे हल करने के लिए, हम इन चरणों का पालन करेंगे। हम निम्नलिखित चरणों को

  1. पायथन में एक्सएमएल पार्सिंग?

    पायथन एक्सएमएल पार्सर पार्सर एक्सएमएल फाइल से उपयोगी जानकारी को पढ़ने और निकालने का सबसे आसान तरीका प्रदान करता है। इस संक्षिप्त ट्यूटोरियल में हम यह देखने जा रहे हैं कि कैसे हम XML फ़ाइल को पार्स कर सकते हैं, संशोधित कर सकते हैं और अजगर ElementTree XML API का उपयोग करके XML दस्तावेज़ बना सकते हैं।

  1. पायथन डीबगर (पीडीबी)

    सॉफ्टवेयर डेवलपमेंट शब्दजाल में, डिबगिंग शब्द का इस्तेमाल प्रोग्राम में त्रुटियों का पता लगाने और उन्हें सुधारने की प्रक्रिया के लिए किया जाता है। पायथन के मानक पुस्तकालय में पीडीबी मॉड्यूल शामिल है जो पायथन कार्यक्रमों के डिबगिंग के लिए उपयोगिताओं का एक सेट है। डिबगिंग कार्यक्षमता को Pdb वर्ग में