পাইথনের XML পার্সার XML ফাইল থেকে তথ্য বের করার সবচেয়ে সহজ পদ্ধতি প্রদান করে। এই টিউটোরিয়ালে দেখব কিভাবে ElementTree XML API ব্যবহার করে XML ফাইল পার্স, মডিফাই এবং তৈরি করা যায়।
উদাহরণ ১: 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 এলিমেন্টে ভ্যালু যোগ করা
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 ডেটা এডিট করা
এক্সিস্টিং 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):
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