पायथन XML पार्सर XML फाइल से उपयोगी जानकारी पढ़ने और निकालने के सबसे आसान तरीकों में से एक प्रदान करता है। इस छोटे ट्यूटोरियल में हम देखेंगे कि कैसे हम पायथन ElementTree XML API का उपयोग करके XML फाइल को पार्स, संशोधित और बना सकते हैं।
पायथन ElementTree API XML डेटा को निकालने, पार्स करने और ट्रांसफॉर्म करने के सबसे आसान तरीकों में से एक है।
उदाहरण 1: XML फाइल बनाना
सबसे पहले हम एक रूट एलिमेंट और एक सब-एलिमेंट के साथ एक नई XML फाइल बनाने जा रहे हैं।
# आवश्यक लाइब्रेरी इम्पोर्ट करें
import xml.etree.ElementTree as xml
def createXML(filename):
# रूट एलिमेंट से शुरू करें
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")
उपरोक्त प्रोग्राम चलाने के बाद, हमारे वर्तमान डिफ़ॉल्ट वर्किंग डायरेक्टरी में "testXML.xml" नाम से एक नई फाइल बनती है:
<users><user /></users>
कृपया ध्यान दें कि फाइल लिखते समय हमने 'wb' मोड का उपयोग किया है यानी फाइल को बाइनरी मोड में लिखें।
XML एलिमेंट्स में मान जोड़ना
आइए अपने उपरोक्त प्रोग्राम में XML एलिमेंट्स को कुछ मान दें:
import xml.etree.ElementTree as xml
def createXML(filename):
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>
आइए प्रत्येक यूजर की सैलरी अपडेट करने का प्रयास करें:
import xml.etree.ElementTree as ET
def updateET(filename):
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")
आउटपुट में हम देख सकते हैं कि सैलरी 'NA' से '500000' में बदल गई है।
उदाहरण: पायथन XML पार्सर
अब आइए एक और प्रोग्राम लिखते हैं जो फाइल में मौजूद XML डेटा को पार्स करेगा और डेटा प्रिंट करेगा।
import xml.etree.cElementTree as ET
def parseXML(file_name):
# ElementTree के साथ XML पार्स करें
tree = ET.ElementTree(file=file_name)
print(tree.getroot())
root = tree.getroot()
print("tag=%s, attrib=%s" % (root.tag, root.attrib))
# बच्चों के माध्यम से जानकारी प्राप्त करें!
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