पायथन एक्सएमएल पार्सर पार्सर एक्सएमएल फाइल से उपयोगी जानकारी को पढ़ने और निकालने का सबसे आसान तरीका प्रदान करता है। इस संक्षिप्त ट्यूटोरियल में हम यह देखने जा रहे हैं कि कैसे हम XML फ़ाइल को पार्स कर सकते हैं, संशोधित कर सकते हैं और अजगर ElementTree XML API का उपयोग करके XML दस्तावेज़ बना सकते हैं।
Python ElementTree API XML डेटा को निकालने, पार्स करने और बदलने का सबसे आसान तरीका है।
तो चलिए ElementTree का उपयोग करके अजगर XML पार्सर का उपयोग शुरू करते हैं:
उदाहरण1
XML फ़ाइल बनाना
सबसे पहले हम एक तत्व और एक उप-तत्व के साथ एक नई XML फ़ाइल बनाने जा रहे हैं।
#Import required library import xml.etree.ElementTree as xml def createXML(filename): # Start with the root element root = xml.Element("users") children1 = xml.Element("user") root.append(children1) tree = xml.ElementTree(root) with open(filename, "wb") as fh: tree.write(fh) if __name__ == "__main__": createXML("testXML.xml")
एक बार जब हम उपरोक्त कार्यक्रम चलाते हैं, तो हमारी वर्तमान डिफ़ॉल्ट कार्यशील निर्देशिका में "textXML.xml" नामक एक नई फ़ाइल बनाई जाती है:
जिसमें कुछ इस तरह की सामग्री है:
<users><user /></users>
कृपया ध्यान दें कि फाइल लिखते समय हमने 'wb' मोड का उपयोग किया है। फ़ाइल को बाइनरी मोड में लिखें।
XML तत्वों में मान जोड़ना
आइए हमारे उपरोक्त कार्यक्रम में XML तत्वों को कुछ मान दें:
#Import required library import xml.etree.ElementTree as xml def createXML(filename): # Start with the root element root = xml.Element("users") children1 = xml.Element("user") root.append(children1) userId1 = xml.SubElement(children1, "Id") userId1.text = "hello" userName1 = xml.SubElement(children1, "Name") userName1.text = "Rajesh" tree = xml.ElementTree(root) with open(filename, "wb") as fh: tree.write(fh) if __name__ == "__main__": createXML("testXML.xml")
उपरोक्त प्रोग्राम को चलाने के बाद, हम देखेंगे कि नए तत्वों को मूल्यों के साथ जोड़ा गया है, कुछ इस तरह:
<users> <user> <Id>hello</Id> <Name>Rajesh</Name> </user> </users>
ऊपर आउटपुट ठीक दिखता है।
आइए अब फाइलों का संपादन शुरू करें:
XML डेटा संपादित करना
आइए हमारे मौजूदा प्रोग्राम में फ़ाइल से थोड़ा सा डेटा जोड़ें।
newdata.xml
<users> <user> <id>1a</id> <name>Rajesh</name> <salary>NA</salary> </user> <user> <id>2b</id> <name>TutorialsPoint</name> <salary>NA</salary> </user> <user> <id>3c</id> <name>Others</name> <salary>NA</salary> </user> </users>
ऊपर हमारी वर्तमान xml फ़ाइल है, आइए प्रत्येक उपयोगकर्ता के वेतन को अद्यतन करने का प्रयास करें:
#Import required library import xml.etree.ElementTree as ET def updateET(filename): # Start with the root element tree = ET.ElementTree(file=filename) root = tree.getroot() for salary in root.iter('salary'): salary.text = '500000' tree = ET.ElementTree(root) with open("newdata.xml", "wb") as fh: tree.write(fh) if __name__ == "__main__": updateET("newdata.xml")
आउटपुट
तो हम देखते हैं कि वेतन 'एनए' से बदलकर '500000' कर दिया गया है।
उदाहरण:पायथन एक्सएमएल पार्सर
अब एक और प्रोग्राम लिखते हैं जो फ़ाइल में मौजूद XML डेटा को पार्स करेगा और डेटा को प्रिंट करेगा।
#Import required library import xml.etree.cElementTree as ET def parseXML(file_name): # Parse XML with ElementTree tree = ET.ElementTree(file=file_name) print(tree.getroot()) root = tree.getroot() print("tag=%s, attrib=%s" % (root.tag, root.attrib)) # get the information via the children! print("-" * 25) print("Iterating using getchildren()") print("-" * 25) users = root.getchildren() for user in users: user_children = user.getchildren() for user_child in user_children: print("%s=%s" % (user_child.tag, user_child.text)) if __name__ == "__main__": parseXML("newdata.xml")
आउटपुट
<Element 'users' at 0x0551A5A0> tag = users, attrib = {} ------------------------- Iterating using getchildren() ------------------------- id = 1a name = Rajesh salary = 500000 id = 2b name = TutorialsPoint salary = 500000 id = 3c name = Others salary = 500000